MySQL 的 LOAD DATA INFILE 命令可以通过加载本地或远程文件的方式,将数据快速地导入到数据库中,具有导入速度快、效率高等优点。
以下是使用 LOAD DATA INFILE 导入数据的步骤:
1. 准备数据文件
首先要准备好要导入的数据文件,该文件的格式必须与要导入到的表的字段格式完全相同。可以采用各种格式的文件,如 .csv、.txt、.xls 等,但必须确保文件与表字段格式匹配,并且文件编码与数据表中的编码一致。
例如,有如下的数据文件 "data.csv" :
ID,Name,Age,Gender
1,Tom,20,Male
2,Lily,18,Female
3,Jack,22,Male
2. 创建数据表
创建需要导入数据的表,表的字段必须与数据文件的格式完全匹配。
例如,创建如下表:
CREATE TABLE IF NOT EXISTS `student` (
`ID` int(11) NOT NULL,
`Name` varchar(50) NOT NULL,
`Age` int(11) NOT NULL,
`Gender` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 使用 LOAD DATA INFILE 导入数据
使用 LOAD DATA INFILE 命令,将数据文件导入到数据表中:
LOAD DATA INFILE 'data.csv'
INTO TABLE `student`
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;
LOAD DATA INFILE 的语法说明如下:
- LOAD DATA INFILE '文件名':指定要导入的数据文件名称。
- INTO TABLE
表名
:指定要导入数据的数据表名称。 - FIELDS TERMINATED BY ',':指定数据文件字段之间的分隔符,例如逗号、制表符等。
- ENCLOSED BY '"':指定数据文件中字符串字段的限定符。如果数据文件中包含“null”或“\N”,需要使用该选项将其识别为 NULL。
- LINES TERMINATED BY '\r\n':指定每一行数据的分隔符。
- IGNORE 1 ROWS:指定要忽略的行数,此处忽略数据文件的第一行标题行。
4. 示例说明
为了更好地说明 LOAD DATA INFILE 命令的用法,下面举例说明:
假设有如下数据文件 data.txt:
1,张三,20,男
2,李四,21,女
3,王五,22,男
现在想将该文件导入到如下的数据表 student 中:
CREATE TABLE IF NOT EXISTS `student` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
`gender` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用以下命令将数据导入到 student 表中:
LOAD DATA INFILE '/usr/local/mysql-5.6.22/data/data.txt' INTO TABLE student FIELDS TERMINATED BY ',';
上面的命令将使用逗号作为字段分割符,并将指定的数据文件 /usr/local/mysql-5.6.22/data/data.txt 导入到 student 表中。
另外,如果数据文件不是在本地,而是在远程服务器上,可以在 LOAD DATA INFILE 命令中指定远程服务器地址。例如,假设数据文件存储在远程服务器的 /data/ 目录下,远程服务器的 IP 是 192.168.1.100,用户名和密码分别是 user 和 password,则可以使用以下命令将数据导入到本地 MySQL 数据库:
LOAD DATA INFILE '\\192.168.1.100\data\data.txt'
INTO TABLE student
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(username, password);
在以上命令中,使用的是双斜杠来表示远程服务器地址,同时指定了字段分割符和行分割符,并忽略了数据文件的第一行。
总体来说,LOAD DATA INFILE 命令是一个非常方便的工具,可以快速地将大量数据导入到 MySQL 数据库中。需要特别注意的是,数据文件的格式和数据表的格式必须完全一致,否则可能导致数据导入错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 的load data infile - Python技术站