0

我正在尝试从仍在 excel 中的 csv 文件加载数据。到目前为止,这是我作为我的 sql 查询的语句:

LOAD DATA LOCAL INFILE 'C:\\Documents and Settings\\J03299\\Desktop\\TMETER.csv'
INTO TABLE edata
COLUMNS TERMINATED BY ',' ENCLOSED BY "" LINES TERMINATED BY '\n'
(Year,Month,Day,MJD,xpiles,xstacks,Utilites);

该文件称为 TMETER,它有 7 列。它有 366 行。我只能读取第一行和前四列(直到 MJD),但之后其他所有内容都为空。其次,在第二行中,它将第 124 行中我的文件 (TMETER.csv) 中的所有列放入我的 edata 表中第二行的第一列中。我很困惑

  1. 为什么它不从柱桩、堆栈、实用程序中读取数据?(请注意,csv 文件中的列名很奇怪,并且与我的 edata 表不同,例如在数据库表中它是堆,而在实际的 csv 文件中它是 x(堆),表中的堆栈但 csv 文件中的 y(堆栈) .mysql不允许我用这种格式创建etable名称,所以我不得不即兴发挥。这可能是为什么它没有从csv文件读取和映射到mysql中的表吗?
  2. 为什么我的语句将我的 csv 文件中的第一行放在 mysql 表的第一行中,然后将所有内容都跳过到第 124 行,然后将 csv 文件中的所有列插入到 mysql 数据库表的第一列中?

对不起,我的英语不好。任何帮助将不胜感激。

4

1 回答 1

0

当您运行该命令时,它应该会给出类似Records: 1 Deleted: 0 Skipped: 0 Warnings: 0. 如果有任何警告,请键入SHOW WARNINGS以查看它们是什么。

这听起来像是行尾错误时我有时会遇到的行为。尝试在代码编辑器中打开您的文档并检查以确保您的行实际上以 \n 结尾。如果这不方便,您也可以尝试删除表并使用LINES TERMINATED BY '\r'or重新导入LINES TERMINATED BY '\r\n',看看是否可以解决问题。

关于字段名称:此命令忽略文本文件中的字段名称。它所做的只是将第一列与括号中指示的第一个字段(在您的情况下为年)匹配,将第二列与括号中的第二个字段(月)匹配,依此类推。如果文件顶部有字段名称,则应在字段列表的括号前添加 IGNORE 1 LINES 来跳过它们。

于 2012-06-04T15:46:17.937 回答