如何从“ mysqlimport”实用程序中列出警告?


28

首先,这不是要从MySQL本身内部加载数据,而是要使用命令行工具“ mysqlimport”。

我正在使用它直接将CSV加载到表中,需要查看它生成的警告。我似乎无法获得警告,无法显示详细信息,也无法打开调试功能。有任何想法吗?

(MySQL 5.0.5)

Answers:


31

mysqlimport是不可能的,但是作为替代,您可以执行以下操作:

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

listOfColumnNames适当的单独的列列表替换。

魔术(如爱德华先前提到的)是在同一会话中一起执行LOAD DATA INFILE和SHOW WARNINGS命令,因为mysqlimport不能提供一种直接获得警告的方法。


亲爱的,谢谢!在看到爱德华的评论后,我才开始写这样的声明。谢谢哟!谢谢
边缘

如果tables.csv是本地文件(即不在数据库服务器上),是否可以正常工作?
Raffi Khatchadourian

以下为我工作的作品首先创建表格,然后执行 mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db 相关的stackoverflow.com/questions/14127529/…–
barlop

并可以添加mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;提及的utf8 等信息stackoverflow.com/questions/4957900/…–
barlop

一个问题是退出代码始终都是0这样,所以我想您必须分析命令输出以检查在编写上述脚本时是否成功导入了脚本(?)
pkaramol

5

就像其他人所说的那样,真正的问题是要使SHOW WARNINGS起作用,您必须处于同一连接的会话中。mysqlimport在完成导入后立即从会话断开连接,从而使得在当前版本中无法捕获其警告。听起来像是捐赠补丁的机会。:)


1

我也没有办法用mysqlimport打印警告。但是由于mysqlimport除了“ LOAD DATA INFILE”之外什么也没做,为什么不使用mysql命令导入数据并紧随其后的是“ SHOW WARNINGS”?


谢谢!有点令人讨厌的mysqlimport并不能很好地发挥作用:/
边缘化

使用“显示警告;” “ LOAD”之后的命令。
爱德华·维奇09年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.