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


88

我有一个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 for MySQL导入向导中执行此操作。它会以prnt.sc/e5iqy1
Devart

Answers:


139

我想您缺少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文件的完整路径

加载数据文件-MySQL文档


1
谢谢,在此命令中未收到任何错误。但是却收到未找到诸如model.csv文件之类的错误。该文件是存放在我的系统桌面
VPS

csv文件存储在我的系统桌面中
vps 2012年

5
更新:如果要导入具有非标准字符的字符串,则需要在语句中指出“ CHARACTER SET utf8”的需求:LOAD DATA LOCAL INFILE'/path/to/file.csv'INTO TABLE db_name.table_name CHARACTER SET UTF8场TERMINATED BY '' ENCLOSED BY '“'由'\ N'终止线;目标表/列也应设置为UTF8
ılǝ

1
也不要忘记关键字LOCAL,您的查询恰到好处
Brij Raj Singh-MSFT 2013年

2
在Windows 7上使用mysql workbench 6.2进行了“类似的工作”。我必须使用双斜杠,'//path//to//your//csv//file//model.csv'并且包含单斜杠的所有字段都中断了。
576i 2014年

69

如果您的数据集较小,则通过GUI来实现的方法是:

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

在此处输入图片说明

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


12
只是一个注意。该导入选项仅在Windows计算机上存在。这些插件显然仍基于.Net,因此无法在Linux或Mac上运行。
BrianC 2014年

8
导入后不要忘记按“应用”。
史蒂夫·投手2014年

7
当心,这可能非常慢。花了几个小时才完成25,000行
Rob Sedgwick

2
时间的长短似乎与硬件有关。我的家用计算机完全阻塞了1万行。我的工作计算机仅在85秒内导入了243K行,其中约200列。
KathyA。

2
@BrianC似乎不再如此了,它在Linux版本上对我来说似乎是这样。
Jammerx2 2015年

21

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

也适用于Mac。


从csv创建新表时,这在Ubuntu 18.04上对我有用。但是,我无法使用此方法将数据添加到现有表中。
LP Whigley

2

您可以使用MySQL表数据导入向导


谢谢:)它解决了我的问题。导入后,我们可以稍后从UI(不适用于专家)更改列名称...
vipul kumawat

尝试了许多无效的方法,但最终成功了。即使没有弄乱本地数据文件设置,它也能正常工作。我猜想MySQL正在运行插入。
Peppershaker

1

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

但是,您可以使用mysqlimport

例:

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

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

AWS RDS文档中有关于此主题的有用信息。


0

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

如果该文件与mysql服务器位于同一台机器上,请确保mysql用户有权读取/写入该文件,或将文件复制到mysql模式目录中:

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

另外,与该问题无关,但如果新行存在问题,请使用sublimeTEXT将行尾更改为WINDOWS格式,保存文件并重试。


0

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

您只需要打开表格(右键单击“ Select Rows-Limit 10000”),就会打开一个新窗口。在这个新窗口中,您将找到“导入图标”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.