【问题标题】:Importing data from a csv file to mysql db将数据从 csv 文件导入 mysql db
【发布时间】:2013-09-26 14:39:37
【问题描述】:

我正在尝试从仍在 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 数据库表的第一列中?

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不确定您是否理解问题并感谢您的回复。执行此语句时,我没有收到任何警告。在我的 csv 文件中,我有 7 列。我的语句将每个值读取到 MJD 列。之后它什么也不读。如果在我的 sql staement-x(piles) 中包含列的实际名称 - 如果列名称在它引发错误时指出错误代码 1064,SQL 状态 42000:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 '(piles),y(stacks))' 附近使用的正确语法
    • 我不知道如何用这个列名将数据读入我的表中,我认为这就是它一直跳到第 124 行的原因
    • 我用代码编辑器打开了文档,每一行都被终止,
    • 确定您的解决方案部分工作...我使用了忽略 1 行,它正在将 csv 文件中的所有列读取到数据库中。问题是它仍然在跳过行......它现在一直到第 156 行
    • 尝试查看第 156 行(实际上可能是第 157 行),看看那里是否有任何异常字符。也许是一个带有换行符的文本字段?
    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多