这是原始 csv 的片段(来自 Quandl):
Date,Open,High,Low,Close,Volume_BTC,Volume_Dollar,Weighted_Price
13/02/2014,650.04,660,645.07,645.24,4027.229102,2628148.177,652.5946528
12/02/2014,677,685.19,631.58,651.99,15511.78726,10224606.46,659.1507667
这是我正在尝试的 SQL 代码,我已经尝试了很多排列:
load data local infile '/../BITSTAMPUSD.csv'
into table test.BTC
CHARACTER SET utf8
FIELDS TERMINATED BY ','
enclosed by ""
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
这是我遇到的错误:
1 row(s) affected, 8 warning(s): 1265 Data truncated for column 'Date' at row 1 1265 Data truncated for column 'Open' at row 1 1265 Data truncated for column 'High' at row 1 1265 Data truncated for column 'Low' at row 1 1265 Data truncated for column 'Close' at row 1 1265 Data truncated for column 'Volume_BTC' at row 1 1265 Data truncated for column 'Volume_Dollar' at row 1 1265 Data truncated for column 'Weighted_Price' at row 1 Records: 1 Deleted: 0 Skipped: 0 Warnings: 8
这是我用来生成表格的代码:
CREATE TABLE BTC(
Date DATE,
Open FLOAT,
High FLOAT,
Low FLOAT,
Close FLOAT,
Volume_BTC FLOAT,
Volume_Dollar FLOAT,
Weighted_Price FLOAT
)
一段时间以来,我一直在努力解决这个问题,非常感谢您的帮助。
更新:我已经尝试了一些建议,但仍然没有解决。我怀疑它与终止的线路有关。我使用的是 Mac,这很重要。 '/n' 是否正确?
最佳答案
您可以在导入字段时使用 str_to_date
转换字段,如本示例中最后两行添加到您的代码中:
load data local infile '/../BITSTAMPUSD.csv'
into table BTC
CHARACTER SET utf8
FIELDS TERMINATED BY ','
enclosed by ""
LINES TERMINATED BY '\r'
IGNORE 1 LINES
(@date,Open,High,Low,Close,Volume_BTC,Volume_Dollar,Weighted_Price)
SET `Date` = DATE_FORMAT(STR_TO_DATE(@date, '%d/%m/%Y'), '%Y/%m/%d');
对于 Mac,我还认为您需要使用 '\r' 来终止行。
我确实尝试创建您的表并导入一个包含您的数据的文件,它与上面的“加载数据”查询一起工作得很好。所以线路终止可能是唯一缺少的东西......
关于mysql - 将 CSV 加载到 MySQL Workbench 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756930/