Mysql 跳过大容量SQL导入命令行中的X行,而不删除以前的数据

Mysql 跳过大容量SQL导入命令行中的X行,而不删除以前的数据,mysql,macos,command-line,import,Mysql,Macos,Command Line,Import,我尝试使用命令cmd行导入非常大的文件: mysql -uroot -ppassword --default-character-set=utf8 mydb < /Users/user1/Downloads/dump.sql 因此,我需要再次从第8498行开始导入,而不删除先前插入的数据 我该怎么做 非常感谢 虽然我同意ethrbunny的问题和评论,但要回答您明确的问题,请继续阅读 我没有办法测试这个,但是 tail -n +8497 /Users/user1/Downloads/du

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

mysql -uroot -ppassword --default-character-set=utf8 mydb < /Users/user1/Downloads/dump.sql
因此,我需要再次从第8498行开始导入,而不删除先前插入的数据

我该怎么做


非常感谢

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

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

tail -n +8497 /Users/user1/Downloads/dump.sql | mysql -uroot -ppassword --default-character-set=utf8 mydb 
正如LinuxTail的手册页所说

-n, --lines=K
output the last K lines, instead of the last 10; 
or use -n +K to output lines starting with the Kth
(我见过一些版本的tail不需要-n,只需要+K,所以您可能需要做一些实验。)

或者与
sed
相同的想法,即

sed -n '9498,9999999p' /Users/user1/Downloads/dump.sql | mysql -uroot -ppassword --default-character-set=utf8 mydb 
999999是指大于文件中记录数的数字


IHTH.

从@Sheller开始-一种方法是将数据导入临时表,然后执行“插入select*from limit”


我怀疑您的转储有问题。

转储是如何生成的?这个错误使我怀疑你的文件是否有问题。通常cmd行导入不会超时。如果转储文件是由我的“mysqldump”创建的,那么在开始时可能会有一个“drop table”(取决于转储文件的参数)。以这种方式导入不会给您太多的自由来跳过记录而不编辑“dump.sql”文件。如果转储是使用mysqldump进行的,那么第xxx行可能是大容量插入语句的一部分,并且不是有效的mysql(本身)-即“插入到表(cola,colb..)值中…”。。。(许多行之后)。。更多数据'@ethrbunny:同意。我不知道mysql转储文件的格式。如果它只是一堆记录,尽管上面可能会起作用。如果我的回答对O.P.没有帮助,我会把它记下来。祝大家好运,这次行动没有留下任何历史。我认为您的方法对于某些类型的转储是有效的。
sed -n '9498,9999999p' /Users/user1/Downloads/dump.sql | mysql -uroot -ppassword --default-character-set=utf8 mydb