【问题标题】:Load CSV into MySQL Workbench table将 CSV 加载到 MySQL Workbench 表中
【发布时间】:2014-02-13 14:25:19
【问题描述】:

这是原始 csv 的 sn-p(来自 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' 正确吗?

【问题讨论】:

  • 在 MySQL 5.3.34 上,我实际上可以按照您指定的方式导入您的文件(日期格式错误除外,(请参阅this question 以解决该问题)。
  • 如果使用工作台,另一种选择是通过数据导入/导出向导运行它。

标签: mysql sql csv


【解决方案1】:

您可以在导入字段时使用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' 来终止行。

我确实尝试过创建您的表并导入一个保存您的数据的文件,它与上面的“加载数据”查询配合得很好。所以线路终止可能是唯一缺少的东西......

【讨论】:

  • 谢谢,这帮助我获得了正确的日期格式,但没有解决我在使用 mac 时没有使用 '\r' 作为行尾的问题
  • 很高兴能帮上忙 :)
【解决方案2】:

LINES TERMINATED BY '\n' 更改为LINES TERMINATED BY '\r' 解决了我的问题!

对 windows 使用 '\n',对 mac 使用 '\r'。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多