【问题标题】:In MySQL Workbench, using "Table Data Import Wizard" to import CSV creates empty table在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表
【发布时间】:2015-12-30 04:02:00
【问题描述】:

我正在尝试使用表数据导入向导将 csv 文件导入 MySQL 表。配置导入设置屏幕底部的示例部分看起来很好,当我运行导入时,它说我的所有条目都已成功加载。但是,当我查看表的内容时,只有列在那里,没有加载我的实际数据。有谁知道为什么会发生这种情况以及如何纠正它?

编辑:

这些是我的 CSV 文件中的几行:

STATION,STATION_NAME,ELEVATION,LATITUDE,LONGITUDE,DATE,MLY-TAVG-NORMAL,MLY-TMAX-NORMAL,MLY-TMIN-NORMAL,平均温度,最高温度,最低温度 GHCND:USW00094085,PIERRE 24 S SD US,647.4,44.0194,-100.353,201001,218,322,113,21.8,32.2,11.3 GHCND:USW00094085,PIERRE 24 S SD US,647.4,44.0194,-100.353,201002,246,354,137,24.6,35.4,13.7 GHCND:USW00094085,PIERRE 24 S SD US,647.4,44.0194,-100.353,201003,339,451,226,33.9,45.1,22.6 GHCND:USW00094085,PIERRE 24 S SD US,647.4,44.0194,-100.353,201004,463,588,337,46.3,58.8,33.7 GHCND:USW00094085,PIERRE 24 S SD US,647.4,44.0194,-100.353,201005,573,696,450,57.3,69.6,45

以下是导入过程的一些图像:

当我尝试查看新创建的表时,我看到了以下内容:

第二次编辑:

这是我的设置图片:

这是我的 CSV 文件的图像,显​​示了行尾:

【问题讨论】:

    标签: mysql csv mysql-workbench


    【解决方案1】:

    验证文件的编码。将源文件解析为 UTF-8 时,工作台会在遇到非 UTF-8 字符时默默地崩溃。我使用 cp1250 (windows 1250) 从 Excel 导出文件,一切正常。

    【讨论】:

    • 这对我有用,导入的静默失败非常令人烦恼!
    • 我同意@Yusha。我只是在 MySql Workbench 表数据导入向导上浪费了很多时间。它总是默默地失败。我最终使用了LOAD DATA LOCAL INFILEstackoverflow.com/questions/11429827/…
    【解决方案2】:

    您需要确保在导入表格时正确设置您的 csv 选项。

    当您进入下面的屏幕时,请注意红色箭头是如何指向扳手的。通过单击该选项下拉设置行分隔符,将出现封闭字符串和字段分隔符。如果这些设置不正确,则数据将无法成功加载。

    以下是一个示例 CSV 文件。请注意在Notepad++ 中如何按下包装器按钮,以便您可以看到行尾。在这种情况下,行尾是 CR LF。工作台导入向导的默认选项只是 LF。此外,默认字段分隔符似乎是 ; 而不是 ,

    您可以在dev.mysql阅读更多内容

    【讨论】:

    • 感谢您的建议。我将行分隔符设置更改为 CR LF,并将所有逗号替换为分号,因为逗号不是字段分隔符的选项。但是,我仍然只是看到一个带有列名的空表。我在上面的第二次编辑中添加了我的设置和 CSV 文件的屏幕截图。
    【解决方案3】:

    我遇到了同样的问题并尝试通过更改设置来解决它,但它对我不起作用。 我只是将所有数据导入为 txt 数据类型和

    (ALTER TABLE tablename MODIFY COLUMN datatype)
    

    稍后更正数据类型。

    【讨论】:

      【解决方案4】:

      尝试使用您的示例数据,它可以正常导入。我猜进一步的数据一定有问题。可能有一个(或多个)记录不是应有的。预览适用于前几条记录,因此您的导入定义看起来不错。尝试导入较小的记录块。从 1 开始,扩展到 10 等等。直到您看到导入失败。您也可以只尝试一列,如果成功,则对失败的列进行二分搜索。

      注意:显示导入的行时存在错误(已在下一个版本中修复)。这始终显示记录总数,而不是实际导入的记录。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。经过搜索,我发现我在表列的声明中出错了。例如,我有一个 INT 类型的列,而我尝试导入的 CSV 文件有一个 VARCHAR 而不是 INT。

        【讨论】:

        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 2020-01-18
        • 2017-10-25
        • 2016-03-25
        • 2018-12-23
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多