在MySQL上导入错误的.sql文件的最佳实践

时间:2019-04-05 15:59:34

标签: mysql

我正在尝试使用此命令行将.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。因此,以上命令返回错误。

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

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

here

所述

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

例如:

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

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

答案 1 :(得分:-1)

您让我感到困惑的是,为什么这里有2个sql文件,所以很难得到任何真正的帮助,我想要一个只需要在需要时导入并创建数据库和表的衬板,只需提供sql文件,我就希望这样做变成脚本,因为每次都很难做到!