我的 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/