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

标签 mysql csv import load-data-infile

我有大量 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 格式的列。有人知道我如何跳过这个圈子吗?

最佳答案

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

将日期部分放入用户定义的变量中,就像您已经在做的那样:@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')

关于mysql - 使用 LOAD DATA INFILE 忽略时间戳中的特定逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31123188/

相关文章:

php - 在这种情况下如何使用 join

mysql - 在这种情况下如何在MySQL中使用连接

mysql - 将 CSV 文件导入 MySql 数据库出现错误

android - 在 Android Studio 中导入库项目

python - 无法导入 Decimal 模块

php - sql查询中的多个where条件

php - 线程评论的可扩展解决方案

python - 计算 CSV 中的属性值?

python - 使用python统计csv文件中的元素

excel - 导入逗号分隔到特定工作表