将更大的sql文件导入MySQL

时间:2013-03-07 17:57:33

标签: mysql

我有一个400MB的大型sql备份文件。我正在尝试使用WAMP-> import将该文件导入MySQL数据库,但由于上传文件大小太大等原因导致导入失败。所以,我已经开始对WAMP下的配置PHP和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

我的问题是,这是使用WAMP->导入导入如此大的sql文件的正确方法吗? 如果是这样,我是否对配置文件进行了正确的更改?上述变量允许的最大值是多少?

14 个答案:

答案 0 :(得分:124)

您可以使用以下命令行方式导入大文件:

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

答案 1 :(得分:33)

由于您(使用其他人的答案澄清评论)说明您使用的是MySQL Workbench,因此您可以尝试使用“sql脚本”选项。这将避免使用命令行的需要(虽然我同意另一个答案,即爬上那匹马并学会骑车是好的。)

  1. 在MySQL Workbench中,转到“文件”菜单,然后选择“打开脚本”。这可能需要很长时间,甚至可能会使应用程序崩溃,因为它不会打开与您描述的内容一样大的内容。

  2. 更好的方法是使用命令行。确保您的计算机上安装了MySQL客户端。这意味着实际的MySQL(不是Workbench GUI或PhpMyAdmin或类似的东西)。这是a link describing the command-line tool。下载并安装完成后,打开计算机上的终端窗口,您可以选择将文件系统中的数据(例如备份文件)中的数据添加到目标数据库中。一种是使用'source'命令,另一种是使用&lt;重定向运算符。

  3. 选项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备份文件。

答案 2 :(得分:22)

在mysql命令窗口中使用:

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

答案 3 :(得分:7)

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

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

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

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

答案 4 :(得分:6)

我非常喜欢BigDump来做这件事。这是一个非常简单的PHP文件,您可以通过SSH或FTP编辑和发送大文件。跑,等!配置字符编码非常简单,默认情况下为UTF-8。

答案 5 :(得分:3)

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

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

http://www.ozerov.de/bigdump/似乎很好(但从未使用过它)

http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/使用它,将结构从混乱中取出非常有用,你可以从那里拿走它。

希望这有帮助:)

答案 6 :(得分:2)

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

在您的php安装的php.iniphp.cfg

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

或设置其他值。 重启Apache

OR

使用php big dump工具我见过的最好的。它的免费和开源

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

答案 7 :(得分:2)

Had a similar problem, but in Windows. I was trying to figure out how to open a large MySql sql file in Windows, and these are the steps I had to take:

  • Go to the download website (http://dev.mysql.com/downloads/).
  • Download the MySQL Community Server and install it (select the developer or full install, so it will install client and server tools).
  • Open MySql Command Line Client from the Start menu.
  • Enter your password used in install.
  • In the prompt, mysql>, enter:

    CREATE DATABASE database_name;

    USE database_name;

    SOURCE myfile.sql

That should import your large file.

答案 8 :(得分:1)

问题是几个月前,但对其他人来说 -

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

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

在phpmyadmin控制台内部工作,转到新数据库并导入。您现在将看到从该文件夹上载文件的其他选项。选择正确的文件,并有点耐心。它有效。

如果仍然出现超时错误,请尝试添加$ cfg ['ExecTimeLimit'] = 0;到同一个config.inc.php文件。

导入.sql文件时遇到困难,其中用户名为root,密码与我新服务器上的root密码不同。我只是在导出.sql文件之前取下密码,导入工作顺利。

答案 9 :(得分:1)

在phpMyAdmin的第1.16项中,他们说:

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


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

要检查的第一件事(或要求您的主机提供商检查)是upload_max_filesize配置文件中memory_limitpost_maxphp.ini _ size的值。所有这三个设置都限制了PHP可以提交和处理的最大数据大小。一位用户还说post_max_sizememory_limit需要大于upload_max_filesize。如果您的上传太大或您的托管服务提供商不愿意更改设置,则存在多种解决方法:

查看$cfg['UploadDir']功能。这允许用户通过scp,ftp或您喜欢的文件传输方法将文件上传到服务器。然后,PhpMyAdmin可以从临时目录导入文件。有关详细信息,请参阅本文档的配置。

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

如果您有shell(命令行)访问权限,请使用MySQL直接导入文件。您可以通过在MySQL中发出“source”命令来完成此操作:

source filename.sql;

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

答案 12 :(得分:0)

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

使用终端中的命令访问mysql命令行并运行 source

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

或直接来自终端

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

在提示

我找到了这个链接How to upload big sql dump files (memory, HTTP or timeout problems) in MYSQL.,它概述了如何上传大型SQL。当我面对客户端196mb sql转储时,它帮助了我。 PHPMySql无法处理的东西。

答案 13 :(得分:-3)

<强>的my.ini

max_allowed_packet = 800M
read_buffer_size = 2014K

<强> PHP.ini中

max_input_time = 20000
memory_limit = 128M
post_max_size=128M