mysql - 将不同日期格式的csv上传到mysql

标签 mysql csv

我的 csv 内容如下:

1,01.03.13,6310086579
2,01.03.13,6310086569
3,01.03.13,6310086573
4,04.03.13,6310086592
5,04.03.13,6310086592
6,04.03.13,6310086592
7,05.03.13,6310086633
8,05.03.13,6310086639

我必须将日期 01.03.13 输入到 MySQL 表中,格式为 2013-03-01,但它不起作用。像下面这样:

LOAD DATA INFILE 'E:\test.csv'
INTO TABLE test
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(sno, sdate, orderno, @d1) 
SET sdate = date_format(str_to_date(@d1, '%d.%m.%y'), '%Y-%m-%d')

最佳答案

@d1 始终为空,因为 csv 文件中只有 3 列。我认为您打算将 csv 文件中的第二列分配给 @d1。

DROP TABLE IF EXISTS T;
CREATE TABLE T (sno INT,sdate DATETIME,orderno varchar(20));

LOAD DATA INFILE 'C:\\Program Files\\MariaDB 10.1\\data\\sandbox\\data.txt'
INTO TABLE t
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(sno, @d1, orderno) 
SET sdate = date_format(str_to_date(@d1, '%d.%m.%y'), '%Y-%m-%d');
;

select * from t;

+------+---------------------+-------------+
| sno  | sdate               | orderno     |
+------+---------------------+-------------+
 |   1 | 2013-03-01 00:00:00 | 6310086579
 |   2 | 2013-03-01 00:00:00 | 6310086569
 |   3 | 2013-03-01 00:00:00 | 6310086573
 |   4 | 2013-03-04 00:00:00 | 6310086592
 |   5 | 2013-03-04 00:00:00 | 6310086592
 |   6 | 2013-03-04 00:00:00 | 6310086592
 |   7 | 2013-03-05 00:00:00 | 6310086633
|    8 | 2013-03-05 00:00:00 | 6310086639  |
+------+---------------------+-------------+
8 rows in set (0.00 sec)

但我认为您根本不需要转换第 2 列。您应该查看https://dev.mysql.com/doc/refman/8.0/en/load-data.html特别是“SET 子句中的用户变量可以通过多种方式使用”开始的部分

关于mysql - 将不同日期格式的csv上传到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52902508/

相关文章:

php - 检查 MySQL 行中是否存在值

mysql - 需要有关连接到数据库 mysql 的支持

php - 如何 curl Facebook 广告报告

arrays - 多维可查询HashMap数组

c++ - 使用 C++ 将 .csv 中的数据读入可用格式

python - 这是在 python 中标记 csv 文件以转换为 json 文件的最佳方法

php - 将多个结果插入数据库 PHP

MySQL运行时错误 '-2147217865 (80040e37)'

PHP 到 MySql 到 CSV 到 Excel UTF-8

c# - 是否可以使用 Dapper 执行一个链接到 2 个数据库上的表的查询?