【发布时间】:2015-09-16 08:37:47
【问题描述】:
我有大量格式如下的 CSV 文件:
2015/06/29,13:00,1,194,36,390
正如您可能看到的,我需要忽略上例中分隔“2015/06/29”和“13:00”的逗号。
目前这是我的 sql 命令的样子:
LOAD DATA local INFILE '"!new!"' IGNORE into table db.table COLUMNS TERMINATED BY ',' IGNORE 3 LINES (@when,col2,col3,col4,col5) SET when=STR_TO_DATE(@when,'%Y/%m/%d %H:%i')" -u user -ppass
所有内容都导入,除了那个讨厌的逗号将所有内容都丢掉一列。
显然我可以将两者都导入单独的列,但它们都需要进入一个 DATETIME 格式的列。任何人都知道我将如何跳过那个箍?
【问题讨论】:
-
你不能。没有办法告诉mysql“这是一个逗号分隔符”,“这是一些看起来像逗号的垃圾,忽略它”。都是逗号。导入到带有两个日期/时间组件的额外字段的临时表,然后选择永久表,结合这两个值。然后去殴打谁/什么产生了错误的 csv。
-
或者,将前两个字段加载到两个单独的用户定义变量中,并使用
CONCAT()函数将它们组合起来。然后通过STR_TO_DATE运行返回,就像你已经在做的那样。 (我不确定为什么这个问题会被否决。)
标签: mysql csv import load-data-infile