【发布时间】:2015-10-04 09:35:34
【问题描述】:
我有一个很大的 .csv (300krows) 并称之为 medium.csv,我正试图将它导入 MySQL 表。当我在 medium.csv 上执行导入命令时,我在 mysql 工作台中得到反馈“0 行受影响”,没有警告,表不受影响。
在尝试进行故障排除时,我开始研究 csv 的迷你版本,我通过在 excel 中打开 medium.csv 并将前 5 行剪切并粘贴到新文件 tiny.csv 中创建了该版本。效果很好:
DROP TABLE IF EXISTS USER_DATA;
CREATE TABLE USER_DATA (UID INT, INSTALL_DATE DATE, PLATFORM_TYPE VARCHAR(10), COUNTRY_TYPE VARCHAR(11));
LOAD DATA LOCAL INFILE 'E:\\Heather Data\\H Docs\\test\\tiny.csv'
into table USER_DATA
fields terminated by ',' enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines
(uid,
@install_date,
platform_type,
country_type)
set
install_date = str_to_date(@install_date, '%d/%m/%Y');
当我在位于同一文件夹中的 medium.csv 上运行此程序时,处理时间已用完,但没有任何反应,Ig et 没有警告,并且目标表不受影响。
你能给我一些关于如何排除故障的提示吗?我真的很困惑为什么小文件可以工作而中文件不能。
列数据类型或 medium.csv 的文件格式中的错误会导致此行为吗?
如果我无法解决此方法,是否可以使用其他导入方法?
感谢您提供的任何建议,
希瑟
【问题讨论】:
-
medium.csv 会在 60 秒后发声吗?
-
因为问题未知,所以你可以尝试一些不同的方法来解决这个问题。 1) 将会话中的 wait_timeout 变量更改为某个高值。如果设置低数字。 2)也可以像sqlyog一样从gui检查它可能会给你一些线索。 3) 也可以在增加 max_allowed_packet 变量大小后进行检查。
-
我已经通过放宽媒体输入文件的一些规范来使其工作,我删除了封闭的并终止了。唷。因此,通过将 tiny.csv 往返进出 excel 可能会解决格式问题。或者文件后面出现格式问题。
-
在我工作过的其他环境中,总是有一种安全的普通方法来爬上结构不可靠的文件内容,例如读取为字符串然后进行转换。不确定在 MySQL 上下文中通常如何处理?通过在其他环境中进行预处理?