首先,这不是从 MySQL 本身加载数据,而是使用命令行工具“mysqlimport”。
我正在用它将 CSV 直接加载到表中,需要查看它生成的警告。我似乎无法在详细模式或调试模式下显示警告。有什么想法吗?
(MySQL 5.0.5)
答案1
使用 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
用适当的分隔列表替换。
神奇的是(正如 Eduard 前面提到的)在同一个会话中一起执行 LOAD DATA INFILE 和 SHOW WARNINGS 命令,因为 mysqlimport 没有提供直接获取警告的方法。
答案2
就像其他人所说的那样,真正的问题是要使 SHOW WARNINGS 起作用,您必须处于相同的连接会话中。mysqlimport 在完成导入后立即断开与会话的连接,这使得在当前版本中无法捕获其警告。听起来像是一个捐赠补丁的机会。:)
答案3
我也找不到用 mysqlimport 打印警告的方法。但是既然 mysqlimport 只执行“LOAD DATA INFILE”,为什么不使用 mysql 命令导入数据,然后执行“SHOW WARNINGS”呢?