将更大的sql文件导入MySQL

Ani*_*nil 63 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
Run Code Online (Sandbox Code Playgroud)

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

Ibu*_*Ibu 131

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

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
Run Code Online (Sandbox Code Playgroud)

  • 看起来是一个很好的借口开始学习它,你不需要成为专家来使用它,你可以在工作台上做的所有工作在命令行上工作得很好 (11认同)
  • @lbu谢谢.但我从未在笔记本电脑中使用过mysql命令行.我总是使用MySQL工作台.有没有办法从工作台启动mysql命令行? (2认同)

Meg*_*ire 34

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

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

  2. 更好的方法是使用命令行.确保您的计算机上安装了MySQL客户端.这意味着实际的MySQL(不是Workbench GUI或PhpMyAdmin或类似的东西).这是一个描述命令行工具的链接.下载并安装完成后,打开计算机上的终端窗口,您可以选择将文件系统中的数据(例如备份文件)中的数据添加到目标数据库中.一种是使用'source'命令,另一种是使用<redirection operator.

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

$mysql -u username -p -h hostname databasename < backupfile.sql
Run Code Online (Sandbox Code Playgroud)

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

$mysql -u username -p -h hostname
[enter your password]
> use databasename;
> source backupfile.sql
Run Code Online (Sandbox Code Playgroud)

显然,这两个选项都要求您拥有一个SQL备份文件.

  • 当"常规"命令行方法没有时,"源"方法对我有用.它还具有实时显示执行活动的好处. (9认同)
  • ya source方法对我来说至少可以显示查询的进度.但是花了很多时间.是否有任何方法可以减少上传时间. (2认同)

Wes*_* Na 25

在mysql命令窗口中使用此命令:

mysql> use db_name;
mysql> source backup-file.sql;
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个解决方案,因为它显示了运行脚本的输出。 (2认同)

小智 7

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

source C:\path\to\file\dump.sql
Run Code Online (Sandbox Code Playgroud)

在查询窗口中运行上面的代码......等待一会儿:)

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


tul*_*tto 6

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