首页 > 解决方案 > 在 MySQL 上导入错误的 .sql 文件的最佳实践

问题描述

我正在尝试使用此命令行将 .sql 文件导入 MySQL

mysql -u username -p databasename < path/myfile.sql

这是 myfile.sql 的示例

INSERT INTO mytable (‘id’,’isDeleted’,’amount’,’date’,’description’,’description_clean’,’isDebit’,’account_id’,’user_uuid’) VALUES (3798,'0',35,'0000-00-00','test','test','1',108,'021752f8-7194-4a4b-8919-fb8216ecba07');
INSERT INTO mytable (‘id’,’isDeleted’,’amount’,’date’,’description’,’description_clean’,’isDebit’,’account_id’,’user_uuid’) VALUES (3799,'0',9.4,'2018-05-02','CB Frichti','CB Frichti','1',108,'316a3da6-821b-42c8-80ea-3c1ac437484e');
INSERT INTO mytable (‘id’,’isDeleted’,’amount’,’date’,’description’,’description_clean’,’isDebit’,’account_id’,’user_uuid’) VALUES (3800,'0',50,'0000-00-00','test','test','1',108,'316a3da6-821b-42c8-80ea-3c1ac437484e');

我的文件包含一些日期,但其中一些是错误的日期0000-00-00。因此上面的命令返回一个错误。

什么是最好的导入方式?我应该删除日期错误的行吗?有没有办法只导入正确的导入行并忽略那些有错误的行?

谢谢你的帮助

标签: mysql

解决方案


如此处所述

您可以在导入时使用该--force (-f)标志。mysqlMySQL 不会停止,而是继续并将错误记录到控制台。

例如:

mysql -u username -p -f -D path/myfile.sql < path/myfile.sql

用默认值(例如1900-01-01)替换无效值不是一个好习惯,您应该更NULL喜欢


推荐阅读