将数据从csv文件导入mysql db

时间:2012-06-04 15:40:48

标签: mysql

我正在尝试从仍在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),但之后其他所有内容都为空。其次在第二行中,它将我的文件中的所有列(TMETER.csv)放入我的edata表中第二行的第一列。

我很困惑
  1. 为什么不读取列堆,堆栈和实用程序中的数据? (请注意,csv文件中的列名很奇怪,与我的edata表不一样,例如在数据库表中它是桩,而在实际的csv文件中它是x(桩),堆栈在表中而y(堆栈)在csv文件中.Mysql不允许我用这种格式创建etable名称所以我不得不即兴发挥。这可能就是为什么它不是从csv文件读取和映射到mysql中的表?
  2. 为什么我的声明把我的csv文件中的第一行放在mysql表的第一行中,然后将所有列跳到第124行,然后将csv文件中的所有列插入到mysql数据库表的第一列?
  3. 抱歉我的英语不好。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

运行命令时,它应该显示Records: 1 Deleted: 0 Skipped: 0 Warnings: 0之类的消息。如果有任何警告,请键入SHOW WARNINGS以查看它们是什么。

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

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