我有一个数据集如下,
Date,Time,ID,Name,Count
01-MAY-2009,00:00,4,Town Hall (West),209
01-MAY-2009,02:00,17,Collins Place (South),28
01-MAY-2009,23:00,18,Collins Place (North),36
为此,我创建了具有以下模式的表,
CREATE TABLE table_name(date DATE, time TIME, id int, name VARCHAR(50), count int);
从" .csv"加载表格档案为,
LOAD DATA INFILE '/home/cloudera/dataset.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@var1, @var2, id, name, count)
SET date = STR_TO_DATE(@var1, '%d-%b-%Y')
SET time = TIME(@var2, "%H:%i");
但是我收到了错误,
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET time = TIME(@var2, "%H:%i")' at line 1
我无法理解错误是什么。我试过浏览MySQL网站和文档,但无法弄清楚正确的格式是什么。任何人都可以取悦我。提前谢谢。
答案 0 :(得分:1)
我不认为你甚至需要在这里使用TIME
功能。你当前的hour:minute
字符串时间文字应该足够好了,q.v。 documentation:
小心将缩写值分配给TIME列。 MySQL用冒号解释缩写的TIME值作为一天中的时间。也就是说,' 11:12'意思是' 11:12:00',而不是' 11:12'
作为有效文字,您的时间将被解释为具有零秒组件。所以,如果您只是按原样插入这些时间字符串,我认为它应该可行。请尝试以下代码:
LOAD DATA INFILE '/home/cloudera/dataset.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@var1, Time, id, name, count)
SET date = STR_TO_DATE(@var1, '%d-%b-%Y');
答案 1 :(得分:0)