我有一个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文件的正确方法吗? 如果是这样,我是否对配置文件进行了正确的更改?上述变量允许的最大值是多少?
答案 0 :(得分:124)
您可以使用以下命令行方式导入大文件:
mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
答案 1 :(得分:33)
由于您(使用其他人的答案澄清评论)说明您使用的是MySQL Workbench,因此您可以尝试使用“sql脚本”选项。这将避免使用命令行的需要(虽然我同意另一个答案,即爬上那匹马并学会骑车是好的。)
在MySQL Workbench中,转到“文件”菜单,然后选择“打开脚本”。这可能需要很长时间,甚至可能会使应用程序崩溃,因为它不会打开与您描述的内容一样大的内容。
更好的方法是使用命令行。确保您的计算机上安装了MySQL客户端。这意味着实际的MySQL(不是Workbench GUI或PhpMyAdmin或类似的东西)。这是a link describing the command-line tool。下载并安装完成后,打开计算机上的终端窗口,您可以选择将文件系统中的数据(例如备份文件)中的数据添加到目标数据库中。一种是使用'source'命令,另一种是使用&lt;重定向运算符。
选项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.ini
或php.cfg
中
post_max_size=500M
upload_max_filesize=500M
memory_limit=900M
或设置其他值。 重启Apache 。
OR
使用php big dump工具我见过的最好的。它的免费和开源
答案 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:
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_limit
,post_max
和php.ini
_ size的值。所有这三个设置都限制了PHP可以提交和处理的最大数据大小。一位用户还说post_max_size
和memory_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