在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表
Posted
技术标签:
【中文标题】在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表【英文标题】:In MySQL Workbench, using "Table Data Import Wizard" to import CSV creates empty table 【发布时间】: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 文件的图像,显示了行尾:
【问题讨论】:
【参考方案1】:验证文件的编码。将源文件解析为 UTF-8 时,工作台会在遇到非 UTF-8 字符时默默地崩溃。我使用 cp1250 (windows 1250) 从 Excel 导出文件,一切正常。
【讨论】:
这对我有用,导入的静默失败非常令人烦恼! 我同意@Yusha。我只是在 MySql Workbench 表数据导入向导上浪费了很多时间。它总是默默地失败。我最终使用了LOAD DATA LOCAL INFILE
。 ***.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。
【讨论】:
这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review 实际上,我认为它确实为这个问题提供了一个潜在的答案(珍妮的回答中暗示了同样的问题),但是是的,它本来可以写得更好[例如,CSV 文件没有“ varchar" 列,所以这很混乱],以上是关于在 MySQL Workbench 中,使用“表数据导入向导”导入 CSV 会创建空表的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?
centos下MySQL Workbench连接时崩溃的解决方法