【问题标题】:Malformed MySQL Export格式错误的 MySQL 导出
【发布时间】:2020-12-31 00:49:00
【问题描述】:

我有一个 11 列的 mysql 表。我将它导出到 .csv 并使用:

SELECT *
FROM my_table
INTO OUTFILE /path/.../my_table.csv
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY ""
LINES TERMINATED BY '\n';

不幸的是,当我尝试在 python 中使用 pandas 读取文件时:

df = pd.read_csv('my_table.csv', sep=';', engine='python',
                 header=None, names=my_table_headers, 
                 na_values='NULL', quoting=csv.QUOTE_NONE)

我明白了:

ParseError: Expected 11 fields in line 1885764, saw 12

为什么会这样?

编辑(更多上下文):

这是我的 mysql 表的样子:

这是使用 TextEdit 打开的 .csv 文件

"nm0000001";"Fred Astaire";"1899";"1987";"soundtrack";"actor";"miscellaneous";"tt0050419";"tt0053137";"tt0031983";"tt0072308"
"nm0000002";"Lauren Bacall";"1924";"2014";"actress";"soundtrack";NULL;"tt0071877";"tt0038355";"tt0117057";"tt0037382"
"nm0000003";"Brigitte Bardot";"1934";NULL;"actress";"soundtrack";"music_department";"tt0057345";"tt0054452";"tt0059956";"tt0049189"
"nm0000004";"John Belushi";"1949";"1982";"actor";"soundtrack";"writer";"tt0072562";"tt0080455";"tt0078723";"tt0077975"
"nm0000005";"Ingmar Bergman";"1918";"2007";"writer";"director";"actor";"tt0083922";"tt0050986";"tt0060827";"tt0050976"
"nm0000006";"Ingrid Bergman";"1915";"1982";"actress";"soundtrack";"producer";"tt0034583";"tt0036855";"tt0038109";"tt0038787"

编辑(已解决):

好的,按照建议,我去寻找给我错误的行并且有一个';'在其中一个字段的中间,例如:

"some guy's ; name"

所以我在 MySQL 导出和 python 代码中都将分隔符更改为 ','。但随后另一行给了我同样的错误,所以我将分隔符更改为 '\t' 需要它并选择了一个 .tsv 文件,无论如何都可以。这次一切都很顺利。一切都很好,就一切都好。谢谢大家。

【问题讨论】:

  • 第 1885764 行是什么样的?

标签: python mysql pandas csv


【解决方案1】:

你的参数看起来特别不正确

被“”转义

请将这些用于 csv,它们通常可以工作

SELECT *
INTO OUTFILE '/path/.../my_table.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
ESCAPED BY '"'
FROM my_table

所有参数都取决于数据,当得到该消息时,它会告诉你在一列中有\n或“之类的字符,所以你必须尝试参数。ESCAPED BY '\'

【讨论】:

  • 嗨,ESCAPED BY "" 的原因是,ESCAPED BY '"' 在我的 MySQL 表中的空值在 .csv 中看起来像这样:field_before,N",next_field。顺便说一句,我在这里阅读:stackoverflow.com/questions/24250579/…
  • 将 row_number 添加到选择和检查行 1885764
猜你喜欢
  • 2018-03-28
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 2015-04-07
  • 1970-01-01
  • 2016-11-28
  • 2015-04-29
相关资源
最近更新 更多