导入更大的SQL文件到MySQL

我有一个400MB的大型SQL备份文件。 我试图使用WAMP->导入将该文件导入到MySQL数据库,但由于诸如上传文件大小过大等原因,导入失败。 所以,我已经提前在WAMP下对configurationPHP和MySQL设置进行了一些更改。 所做的更改是

Under WAMP->MySQL->my.ini max_allowed_packet = 800M read_buffer_size = 2014K Under WAMP->PHP->PHP.ini max_input_time = 20000 memory_limit = 128M 

我的问题是,这是正确的方式来导入这样一个大型的SQL文件使用WAMP->导入? 如果是这样,我做了正确的configuration文件更改? 上述variables允许的最大值是多less?

你可以用这个命令行方式导入大文件:

 mysql -h yourhostname -u username -p databasename < yoursqlfile.sql 

既然你声明你正在使用MySQL Workbench,你可以尝试使用“sql script”选项。 这将避免需要使用命令行(虽然我同意另一个答案,那就是爬上那匹马,学骑)是很好的。

  1. 在MySQL Workbench中,进入文件菜单,然后select“打开脚本”。 这可能需要很长时间,甚至可能会导致应用程序崩溃,因为没有打开与所描述的一样大的东西。

  2. 更好的方法是使用命令行。 确保你的机器上安装了MySQL客户端。 这意味着实际的MySQL(不是工作台GUI或PhpMyAdmin或类似的东西)。 这是一个描述命令行工具的链接 。 一旦你下载并安装了这个程序,在你的机器上打开一个terminal窗口,你就有两个select,从你的文件系统(比如在一个备份文件)中汲取数据到你的目标数据库。 一个是使用'source'命令,另一个是使用<redirect操作符。

选项1:从备份文件所在的目录中:

 $mysql -u username -p -h hostname databasename < backupfile.sql 

选项2:从备份文件所在的目录中:

 $mysql -u username -p -h hostname [enter your password] > use databasename; > source backupfile.sql 

显然,这两个选项都要求你有一个备份文件是SQL。

用户这从MySQL命令窗口:

 mysql> use db_name; mysql> source backup-file.sql; 

我真的很喜欢BigDump做到这一点。 这是一个非常简单的PHP文件,您可以通过SSH或FTP与您的大文件进行编辑和发送。 跑,等等! configuration字符编码非常简单,默认情况下是UTF-8。

您可以使用以下命令从任何SQL查询浏览器中导入命令:

 source C:\path\to\file\dump.sql 

在查询窗口中运行上面的代码…并等待一段时间:)

这或多或less与前面提到的命令行版本相同。 主要区别在于它是从MySQL内部执行的。 对于那些使用非标准编码的人来说,这比使用命令行版本更安全,因为编码失败的风险较小。

你需要做的3件事情,如果你在本地做:

在你的PHP安装的php.iniphp.cfg

 post_max_size=500M upload_max_filesize=500M memory_limit=900M 

或设置其他值。 重新启动Apache

要么

使用php的大转储工具有史以来最好的我见过。 它的自由和开源

http://www.ozerov.de/bigdump/

我们在内部移动sql server时遇到过同样的问题。

我们最终使用的一个好的解决scheme是将sql文件分割成块。 有几种方法可以做到这一点。 使用

http://www.ozerov.de/bigdump/似乎不错(但从来没有使用过);

http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/使用它,这是非常有用的结构摆脱混乱,你可以从那里拿走。;

希望这可以帮助 :)

在phpMyAdmin的项目1.16上,他们说:

1.16我无法上传大的转储文件(内存,HTTP或超时问题)。


从版本2.7.0开始,导入引擎已被重新编写,不会出现这些问题。 如果可能,请将您的phpMyAdmin升级到最新版本,以利用新的导入function。

要检查的第一件事情(或要求您的主机提供商检查)是php.iniconfiguration文件中的upload_max_filesizememory_limit和post_max _size的值。 所有这三个设置限制了PHP可以提交和处理的数据的最大大小。 一位用户也表示, post_max_sizememory_limit需要大于upload_max_filesize。 如果您的上传文件太大或您的主机提供商不愿意更改设置,则可以使用以下几种解决方法:

看看$cfg['UploadDir']function。 这允许通过scp,ftp或者您最喜欢的文件传输方法将file upload到服务器。 然后PhpMyAdmin能够从临时目录中导入文件。 本文档的configuration中提供了更多信息。

上传前使用实用工具(如BigDump )分割文件。 我们不能支持这个或任何第三方应用程序,但知道用户已经成功。

如果你有shell(命令行)访问,使用MySQL直接导入文件。 你可以通过在MySQL中发出“source”命令来做到这一点:

 source filename.sql; 

有一个类似的问题,但在Windows中。 我试图找出如何在Windows中打开一个大型的MySql sql文件,这些是我必须采取的步骤:

  • 转到下载网站( http://dev.mysql.com/downloads/ )。
  • 下载MySQL社区服务器并安装它(select开发者或完全安装,所以它将安装客户端和服务器工具)。
  • 从开始菜单打开MySql命令行客户端。
  • input安装时使用的密码。
  • 在提示符mysql>中input:

    CREATE DATABASE database_name;

    USE database_name;

    来源myfile.sql

这应该导入你的大文件。

问题是几个月大,但对于其他人看 –

导入大文件的一个更简单的方法是在你的文件夹c:/wamp/apps/phpmyadmin3.5.2创build一个子目录'upload',并在同一目录下的config.inc.php文件中编辑这一行以包含文件夹名称$ cfg ['UploadDir'] ='上传';

然后将传入的.sql文件放在文件夹/上传中。

从phpmyadmin控制台内部工作,转到新的数据库并导入。 现在您将看到从该文件夹上传文件的附加选项。 select正确的文件,并有点耐心。 有用。

如果你仍然有时间错误尝试添加$ cfg ['ExecTimeLimit'] = 0; 到相同的config.inc.php文件。

我无法导入一个.sql文件,其中用户名是root,密码与我的新服务器上的root密码不同。 在导出.sql文件之前,我只是取下密码,导入工作顺利。

我相信最简单的方法是使用MYSQL命令行上传文件。

使用命令从terminal访问mysql命令行并运行源代码

  mysql --host=hostname -uuser ppassword source filename.sql 

或直接从terminal

  mysql --host=hostname -uuser ppassword < filename.sql 

在提示

我发现这个链接如何在MYSQL中上传大的sql转储文件(内存,HTTP或超时问题)。 它给出了上传大型SQL所要执行的步骤。 当我面对一个客户端196MB的SQL转储帮助我。 PHPMySql无法处理的东西。

如果您在Windows上使用source命令,请记住使用f:/myfolder/mysubfolder/file.sql而不是f:\myfolder\mysubfolder\file.sql

最简单的解决scheme是mySql workBench只需将.sql文件文本复制到mysql-workbenck的查询窗口,并执行它,所有重命名的东西都将由它完成。

的my.ini

 max_allowed_packet = 800M read_buffer_size = 2014K 

的php.ini

 max_input_time = 20000 memory_limit = 128M post_max_size=128M