使用LOAD DATA INFILE忽略时间戳中的特定逗号?

时间:2015-06-29 18:44:12

标签: mysql csv import load-data-infile

我有大量的CSV文件都是这样编写的:

    2015/06/29,13:00,1,194,36,390

您可能会看到我需要忽略上面示例中分隔“2015/06/29”和“13:00”的逗号。

Currenly这是我的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格式化列。任何人都知道如何跳过那个箍?

1 个答案:

答案 0 :(得分:1)

您无需“忽略”逗号。只需将两个字段导入两个单独的用户定义变量,然后将它们连接成列的单个值。

将日期部分放入用户定义的变量中,就像您已经在做的那样:@whendt

将第二个字段(时间部分)放入第二个用户定义变量中:@whentm

SET子句中,将这两个变量与CONCAT函数连接在一起。

  CONCAT(@whendt, ' ', @whentm)

例如:

 LOAD DATA local INFILE '"!new!"' 
 IGNORE 
 INTO table db.table 
 COLUMNS TERMINATED BY ',' 
 IGNORE 3 LINES 
 ( @whendt    -- first column is date portion
 , @whentm    -- second column is time portion
 , col2
 , col3
 , col4
 , col5 
 )
 SET when = STR_TO_DATE( CONCAT(@whendt,' ',@whentm) ,'%Y/%m/%d %H:%i')