【问题标题】:SQLite Import CSV File - Expected 3 columns, found 1948SQLite 导入 CSV 文件 - 预期 3 列,发现 1948
【发布时间】:2012-10-31 01:29:22
【问题描述】:

我正在尝试将 CSV 文件(位于 https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/pokemon_species_names.csv 的 Pokemon CSV 文件)导入 SQLite3。我使用以下行创建了一个表:

sqlite> create table pokemon_species_names (pid integer, lang integer, pokemonName text, genus text);

当然可以,但是当我尝试导入上述 CSV 文件时,我收到以下错误:

sqlite> .separator ","(编辑:最初忘记添加这个,但我也运行过这个)

sqlite> .import ./pokemon_species_names.csv pokemon_species_names

Error: ./pokemon_species_names.csv line 1: expected 4 columns of data but found 1948

为什么只有 4 列数据却要找到 1948 列数据?

【问题讨论】:

  • 我怀疑该 csv 文件中存在行尾不兼容问题。你在什么操作系统上运行它?
  • 文件在您的系统上是什么样的?您可能遇到换行符问题(例如,您将带有 Unix 换行符的文件下载到 Windows 系统,而操作系统将其视为单行)。
  • OS X。我有来自同一来源的文件可以正常工作,但我还必须修改这个特定的文件以排除某些数据。我是在 Excel 中这样做的。
  • @rar 你用未修改的文件试过了吗?
  • 嗯。那么你知道什么,它奏效了!为什么会破坏它?

标签: sqlite csv


【解决方案1】:

SQLite 可能没有寻找正确的分隔符。尝试运行:

.separator ","

导入前。

【讨论】:

  • 抱歉,我应该指定我这样做了。我会把它添加到我的问题中。
【解决方案2】:

对于查看此内容的任何人(5 年后),在 Mac 上的 TextWrangler 中,您选择“另存为”Unicode(UTF-8) 和 Unix(LF)。然后 .import 将像魅力一样工作。

【讨论】:

    【解决方案3】:

    回答我自己的问题。原来我使用的文件有问题,因为我修改了它(在 Excel 中)。我使用了原始的、未修改的文件,它有效。感谢 glibdud 和 Larry Lustig 为我指明了正确的方向。

    【讨论】:

      【解决方案4】:

      您的 csv 文件应使用 Unicode(UTF-8) Unix(LF) 编码 您可以从 TextWrangler 执行此操作

      如果您从 windows/mac 保存它,则它是 Windows(CRLF) 或 Classic Mac(LF)

      【讨论】:

        猜你喜欢
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2016-01-21
        相关资源
        最近更新 更多