https://manios.org/2013/03/19/import-a-large-sql-dump-file-to-a-mysql-database-from-command-line

从命令行将大型SQL转储文件导入MySQL数据库
2分钟阅读
今天,我不得不使用Windows命令行将非常大的SQL转储文件(6 Gb)导入MySQL数据库。如果您使用的是Linux,则相同。该过程如下:

使用管理权限打开命令提示符(或Linux中的shell)
如果您在Windows中,请将字符集设置为unicode。Linux默认使用UTF-8。
chcp 65001
使用命令行连接到mysql实例
$PATH_TO_MYSQL\mysql.exe -h 192.168.1.1 –port=3306 -u root -p
如果您在localhost中,则不需要主机和端口

$PATH_TO_MYSQL\mysql.exe -u root -p
您现在位于mysql shell中。将网络缓冲区长度设置为较大的字节数。对于如此大的数据文件,默认值可能会引发错误
set global net_buffer_length=1000000;
将允许的最大数据包大小设置为一个大字节数。默认值可能会导致此类大数据文件出错。
set global max_allowed_packet=1000000000;
禁用外键检查,以避免延迟,错误和不良行为
SET foreign_key_checks = 0;
SET UNIQUE_CHECKS = 0;
SET AUTOCOMMIT = 0;
导入您的SQL转储文件
source C:\bob_db\dbdump150113.sql
大功告成!切记在完成过程后启用外键检查!

SET foreign_key_checks = 1;
SET UNIQUE_CHECKS = 1;
SET AUTOCOMMIT = 1;
如果您使用的是Linux,则可以创建一个Bash脚本,该脚本将执行脏工作并写入导入的stdout开始时间和结束时间:

#!/bin/sh

# store start date to a variable
imeron=`date`

echo “Import started: OK”
dumpfile=”/home/bob/bobiras.sql”

ddl=”set names utf8; ”
ddl=”$ddl set global net_buffer_length=1000000;”
ddl=”$ddl set global max_allowed_packet=1000000000; ”
ddl=”$ddl SET foreign_key_checks = 0; ”
ddl=”$ddl SET UNIQUE_CHECKS = 0; ”
ddl=”$ddl SET AUTOCOMMIT = 0; ”
# if your dump file does not create a database, select one
ddl=”$ddl USE jetdb; ”
ddl=”$ddl source $dumpfile; ”
ddl=”$ddl SET foreign_key_checks = 1; ”
ddl=”$ddl SET UNIQUE_CHECKS = 1; ”
ddl=”$ddl SET AUTOCOMMIT = 1; ”
ddl=”$ddl COMMIT ; ”

echo “Import started: OK”

time mysql -h 127.0.0.1 -u root -proot -e “$ddl”

# store end date to a variable
imeron2=`date`

echo “Start import:$imeron”
echo “End import:$imeron2”

 

 

 

MySQL的source命令

用MySQL的source命令导入SQL文件实战记录。

进入 CMD
执行 mysql -uroot -p 输入密码后进入 MySQL 命令提示符
依次执行:

use XXXdatabase;
set charset utf8;
source d:/xxx.sql;

本以为这样就可以挂机等待 sql 文件如期导入了,但是事与愿违,当过一段时间在打开时发现命令行提示链接超时,等待重新链接。
这时候需要再执行以下 sql:

set global max_allowed_packet=100000000;
set global net_buffer_length=100000;
set global interactive_timeout=28800000;
set global wait_timeout=28800000;
分类: 未分类

5,614 条评论

发表评论