MySQL LOAD DATA INFILE 导入 CSV 格式数据

主要介绍将 Neo4j 数据库中数据全部导入到 MySQL 数据库中,将 Neo4j 数据导出为 CSV 格式数据,然后再将 CSV 格式数据导入到 mysql 中。

前半部分,即 Neo4j 数据导出为 CSV 格式的具体过程可以参考:Neo4j 数据导出为 CSV 格式
这里主要介绍使用 LOAD DATA INFILE 方式将 CSV 格式的数据文件导入到 MySQL 中。

实验环境

Ubuntu 版本:ubuntu 14.04-desktop-amd64
MySQL版本:MySQL 5.5
mysql-workbench 版本:mysql-workbench-community-6.2.5-1ubu1404-amd64

登陆数据库

这里之所以将登陆数据库这么简单的步骤也单独列出来,是因为这里有一个关键的参数要加,因为这里将本地数据文件导入到本地数据库中,所以需要在登陆数据库时添加一个--local-infile选项,否则之后会报没有权限的错误。
完整的登陆语句为

mysql --local-infile -uroot -ppassword

这里写图片描述

创建数据库和表

创建所需导入的数据库和表,因为导入的数据都是英文格式,而且作为实验无特殊要求,所以这里以最简单的方式创建数据库和表。

  • 创建数据库
    这里设置要导入的数据库为 netowrk
CREATE DATABASE network;

这里写图片描述

为方便起见,除起止 id 设为 int型,其余字段都设置为VARCHAR(50),
具体执行为

mysql> CREATE TABLE out10(
    -> start_id int,
    -> nlabels VARCHAR(50),
    -> nname VARCHAR(50),
    -> nlocation VARCHAR(50),
    -> nip VARCHAR(50),
    -> nsize VARCHAR(50),
    -> nzone VARCHAR(50),
    -> nrack VARCHAR(50),
    -> nram VARCHAR(50),
    -> ndisk VARCHAR(50),
    -> nid VARCHAR(50),
    -> ncpu VARCHAR(50),
    -> ntype VARCHAR(50),
    -> nversions VARCHAR(50),
    -> nports VARCHAR(50),
    -> ndependencies VARCHAR(50),
    -> rel_type VARCHAR(50),
    -> end_id int,
    -> mlables VARCHAR(50),
    -> mname VARCHAR(50),
    -> mlocation VARCHAR(50),
    -> msize VARCHAR(50),
    -> mrack VARCHAR(50),
    -> mram VARCHAR(50),
    -> mdisk VARCHAR(50),
    -> mtype VARCHAR(50),
    -> mversions VARCHAR(50),
    -> mports VARCHAR(50),
    -> mdependencies VARCHAR(50)
    -> );

这里写图片描述

导入数据

将数据存放在目录为/home/erik/Documents/out10-2.csv,根据数据特点,只需执行如下操作

mysql> LOAD DATA LOCAL INFILE '/home/erik/Documents/out10-2.csv'
    -> INTO TABLE out10
    -> FIELDS TERMINATED BY ','
    -> IGNORE 1 LINES
    -> ;

`LOAD DATA LOCAL INFILE ‘/home/erik/Documents/out10-2.csv’,这里要加上“LOCAL”,然后后面跟本地文件路径,否则会报错。

FIELDS TERMINATED BY ','是将要导入的数据以逗号为分割标志传入到 MySQL 数据库中,因为之前在 Excel 保存的 CSV 文件默认以逗号为分割。

IGNORE 1 LINES这里忽略第一行,因为 CSV 文件第一行是标签,创建表时已经定义了相应的字段,这里不用输入到数据库中。

这里写图片描述

在 mysql-workbench 中查看,部分显示为
这里写图片描述

这里写图片描述

并且每个字段都可以正常查看
这里写图片描述

这里写图片描述

参考资料

  1. MySQL :: MySQL 5.7 Reference Manual :: 13.2.6 LOAD DATA INFILE Syntax:
    https://dev.mysql.com/doc/refman/5.7/en/load-data.html

  2. MYSQL import data from csv using LOAD DATA INFILE - Stack Overflow
    https://stackoverflow.com/questions/14127529/mysql-import-data-from-csv-using-load-data-infile

  3. 【MySQL实践经验】LOAD DATA INFILE 报错 ERROR 1148 (42000) 或 ERROR 1045 (28000)的解决办法 - slvher的专栏 - CSDN博客
    http://blog.csdn.net/slvher/article/details/8768468

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LOAD DATA INFILE语句用于将CSV文件的数据导入MySQL表中。下面是LOAD DATA INFILE语句的一般使用方法: ```sql LOAD DATA INFILE 'path_to_csv_file' INTO TABLE table_name FIELDS TERMINATED BY ',' -- 指定CSV文件中字段的分隔符 ENCLOSED BY '"' -- 指定CSV文件中字段的引号字符 LINES TERMINATED BY '\n' -- 指定CSV文件中行的分隔符 IGNORE 1 ROWS; -- 可选,忽略CSV文件中的表头行 ``` 具体说明如下: - `'path_to_csv_file'`:CSV文件的路径,可以是相对路径或绝对路径。 - `table_name`:要导入数据的目标表名。 - `FIELDS TERMINATED BY ','`:指定CSV文件中字段的分隔符。常见的分隔符是逗号(,)。 - `ENCLOSED BY '"'`:指定CSV文件中字段的引号字符。如果CSV文件中的字段没有被引号包围,可以省略该选项。 - `LINES TERMINATED BY '\n'`:指定CSV文件中行的分隔符。常见的分隔符是换行符(\n)。 - `IGNORE 1 ROWS`:可选,表示忽略CSV文件中的表头行。如果CSV文件中包含表头行,可以使用该选项进行忽略。 注意事项: - 在使用LOAD DATA INFILE语句导入数据之前,确保MySQL用户具有文件读取权限,并且CSV文件的路径是可访问的。 - 确保CSV文件的字段与目标表的字段一一对应,并且数据类型匹配。 - 如果CSV文件中的数据存在错误或格式问题,可能导致导入失败。在导入之前,最好预览和检查CSV文件的内容。 这是LOAD DATA INFILE语句的一般用法,你可以根据实际情况进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值