在批量SQL导入命令行中跳过X行而不擦除先前的数据

时间:2012-10-18 09:03:29

标签: mysql macos command-line import

我尝试使用cmd行导入非常大的文件,通过命令:

mysql -uroot -ppassword --default-character-set=utf8 mydb < /Users/user1/Downloads/dump.sql

但是过了一段时间我收到了一条消息:

ERROR 2006 (HY000) at line 8498: MySQL server has gone away

因此,我需要从第8498行再次开始导入而不删除先前插入的数据。

我该怎么做?

非常感谢..

2 个答案:

答案 0 :(得分:0)

虽然我同意ethrbunny的问题和评论,但要回答你的明确问题,请继续阅读......

我没有办法测试这个,但是像

那样
tail -n +8497 /Users/user1/Downloads/dump.sql | mysql -uroot -ppassword --default-character-set=utf8 mydb 

正如linux tail的手册页所说

-n, --lines=K
output the last K lines, instead of the last 10; 
or use -n +K to output lines starting with the Kth

(我已经看到某些版本的尾巴不需要-n,只需要+ K,因此您可能需要进行一些实验。)

或与sed相同的想法,即

sed -n '9498,9999999p' /Users/user1/Downloads/dump.sql | mysql -uroot -ppassword --default-character-set=utf8 mydb 

999999的数字应大于文件中的记录数。

IHTH。

答案 1 :(得分:0)

从@shellter开始 - 一个途径是将数据导入临时表,然后执行'insert into&lt; final table&gt; select * from&lt; temp table&gt;限制&lt;起始行,要导入的行&gt;。

我怀疑你的转储出了问题。