mysql - 在 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
。因此上面的命令返回一个错误。
什么是最好的导入方式?我应该删除日期错误的行吗?有没有办法只导入正确的导入行并忽略那些有错误的行?
谢谢你的帮助
解决方案
如此处所述
您可以在导入时使用该--force (-f)
标志。mysql
MySQL 不会停止,而是继续并将错误记录到控制台。
例如:
mysql -u username -p -f -D path/myfile.sql < path/myfile.sql
用默认值(例如1900-01-01
)替换无效值不是一个好习惯,您应该更NULL
喜欢
推荐阅读
- git - git checkout -b dev remote_repo/dev 没有从远程获取所有提交
- c++ - 为什么 cout 输出内存地址不是字符串?
- sqlite - 为 Ionic4 Vue 安装 SQlite
- c++ - 这会对代码产生任何影响吗
- c# - 选中复选框列时,我需要将所有选定的 datagridview 行复制到另一个 datagridview
- selenium - 如果我在我的代码上添加中断但如果删除会收到错误,为什么代码在 selenium chrome 驱动程序中工作?
- javascript - 我不明白这段代码(用于 React/Redux)是如何工作的
- r - 如何更改森林图中的线序
- python - SyntaxError:位置参数遵循多个过滤器元素查询中的关键字参数
- mysql - JOIN 与右侧同一张表的多次引用