【发布时间】:2012-02-05 11:19:17
【问题描述】:
我有一个包含超过一百万条插入语句的 sql 文件。 MySQL管理的官方工具由于其大小而无法打开。是否可以使用 BASH 脚本插入记录?
到目前为止,我已经尝试过了,但它不起作用。
while read line
do
mysql -u root --password=root << eof
use dip;
$line;
eof
done < $1
【问题讨论】:
我有一个包含超过一百万条插入语句的 sql 文件。 MySQL管理的官方工具由于其大小而无法打开。是否可以使用 BASH 脚本插入记录?
到目前为止,我已经尝试过了,但它不起作用。
while read line
do
mysql -u root --password=root << eof
use dip;
$line;
eof
done < $1
【问题讨论】:
mysql -u root --password=root <mysqlfile.sql
【讨论】:
-D dip 来选择我想要的数据库。
mysql 行进一步阅读,因此假设您已在调用中拥有所有内容,抱歉。
试试这个:
while read line
do
mysql -u root --password=root -c "$line"
done < $1
注意事项:
如果 sql 包含双引号 ("),你将不得不转义它们
如果 SQL 语句跨越多行,你必须弄清楚
这种方法的优点是每一行都有自己的事务,而如果你触发整个文件,它可能会破坏日志作为一个如此大的更改集
【讨论】: