如何将 csv 文件导入 MySQL 工作台?

Posted

技术标签:

【中文标题】如何将 csv 文件导入 MySQL 工作台?【英文标题】:How to import a csv file into MySQL workbench? 【发布时间】:2012-07-10 21:42:06 【问题描述】:

我有一个 CSV 文件。它包含 140 万行数据,因此我无法在 Excel 中打开该 csv 文件,因为它的限制约为 100 万行。

因此,我想在 mysql 工作台中导入这个文件。此 csv 文件包含类似

的列
"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

我正在尝试在 MySQL 工作台中创建一个名为“dummy”的表,其中包含像

这样的列
ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

CSV 文件名为model.csv。我在工作台中的代码是这样的:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

但我收到类似model.CSV file not found的错误

【问题讨论】:

您也可以在 dbForge Studio 中为MySQL import wizard 执行此操作。它以这种方式自动生成表格prnt.sc/e5iqy1 【参考方案1】:

我猜你错过了 ENCLOSED BY 子句

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

并指定csv文件完整路径

Load Data Infile - MySQL documentation

【讨论】:

谢谢,我在这个命令中没有收到任何错误。但是我收到了类似 model.csv 文件未找到的错误。该文件存储在我的系统桌面中 csv 文件存储在我的系统桌面 更新:如果导入带有非标准字符的字符串,在语句中指出需要“CHARACTER SET utf8”是很有用的:LOAD DATA LOCAL INFILE '/path/to/file.csv ' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' 由 '\n' 终止的行;目标表/列也应设置为 utf-8 还有一个不应该忘记关键字LOCAL,你的查询是正确的 使用 mysql workbench 6.2 在 Windows 7 上工作“种类”。我不得不使用双斜杠'//path//to//your//csv//file//model.csv' 并且所有包含单斜杠的字段都损坏了。【参考方案2】:

如果你有较小的数据集,通过 GUI 实现它的一种方法是:

    打开查询窗口 SELECT * FROM [table_name] 从菜单栏中选择导入 按结果网格右下方的应用

参考: http://www.youtube.com/watch?v=tnhJa_zYNVY

【讨论】:

只是一个注释。该导入选项仅存在于 Windows 机器上。这些插件显然仍然基于 .Net,因此不适用于 Linux 或 Mac。 导入后别忘了按应用。 当心,这可能很慢。花了几个小时才完成 25,000 行 时间长度似乎非常依赖于硬件。我的家用电脑在 10K 行上完全卡住了。我的工作计算机刚刚在 85 秒内导入了 243K 行和大约 200 列。 @BrianC 这似乎不再是这种情况,它出现在 Linux 版本上。【参考方案3】:

在 SCHEMAS 下的导航器中,右键单击您的架构/数据库并选择“表数据导入向导”

也适用于 mac。

【讨论】:

从 csv 创建新表时,这对我在 Ubuntu 18.04 上有效。但是我无法使用这种方法将数据添加到现有表中。 谢谢,我以为我无法在 UI 中找到它而失去理智。【参考方案4】:

你可以使用 MySQL Table Data Import Wizard

【讨论】:

谢谢 :) 它解决了我的问题。我们可以稍后从 UI 更改列名(不适合专家),一旦它被导入...... 尝试了许多不起作用的东西,但最终还是成功了。即使没有弄乱本地数据文件设置,它也可以工作。我猜 MySQL 正在运行插入操作。【参考方案5】:

目前无法在所有平台上导入 CSV(使用 MySQL Workbench),也不建议该文件是否与 MySQL 服务器主机位于同一主机中。

但是,您可以使用mysqlimport。

例子:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

在此示例中,mysqlimport 被指示加载所有名为“sales”且扩展名为“part_”的文件。这是加载“拆分”示例中创建的所有文件的便捷方式。使用 --compress 选项来最小化网络流量。 --fields-terminated-by=',' 选项用于 CSV 文件,而 --local 选项指定传入数据位于客户端上。如果没有 --local 选项,MySQL 将在数据库主机上查找数据,因此请始终指定 --local 选项。

AWS RDS documentation 中有关于该主题的有用信息。

【讨论】:

【参考方案6】:

如果服务器位于远程机器上,请确保文件在远程机器上,而不是在本地机器上。

如果文件在mysql服务器所在的同一台机器上,请确保mysql用户具有读取/写入文件的权限,或者将文件复制到mysql模式目录中:

在我的 ubuntu 中是:/var/lib/mysql/db_myschema/myfile.csv

另外,与这个问题无关,但是如果你对新行有问题,使用 sublimeTEXT 将行尾更改为 WINDOWS 格式,保存文件并重试。

【讨论】:

【参考方案7】:

这似乎有点棘手,因为它确实困扰了我很长时间。

您只需要打开表格(右键单击“选择行 - 限制 10000”),您将打开一个新窗口。在这个新窗口中,您将找到“导入图标”。

【讨论】:

以上是关于如何将 csv 文件导入 MySQL 工作台?的主要内容,如果未能解决你的问题,请参考以下文章

如何把csv文件批量导入到mysql数据库

如何将 CSV 文件导入 MySQL 表?

如何将 CSV 文件导入 MySQL 表?

如何通过 phpmyadmin 将 csv 文件导入 mysql

如何将 csv 文件导入 mysql 表并自动递增

如何将 CSV 文件导入 MySQL 表