Mysql 简明教程
MySQL - Import CSV into database
Import MySQL CSV into Database
在将 CSV 文件导入到数据库服务器之前,我们必须确保以下事项 -
-
Database Table − 确保您已设置一个数据库表来接收传入的数据。
-
CSV File − 您需要一个包含要导入数据的 CSV 文件。
-
User Privileges − 确保您的帐户拥有必要的权限(尤其是 FILE 和 INSERT)来执行此操作。
-
匹配列 - 目标表和 CSV 文件应具有相同数据类型的匹配列。
-
CSV Format − CSV 文件应采用逗号分隔格式,每行表示一条记录。
Syntax
以下是 MySQL 中 LOAD DATA INFILE 语句的语法 -
LOAD DATA INFILE file_path
INTO TABLE table_name
FIELDS TERMINATED BY delimiter
ENCLOSED BY enclosure
LINES TERMINATED BY line_separator
IGNORE number_of_lines_to_skip;
其中,
-
file_path 是包含要导入数据 CSV 文件的路径。
-
table_name 是目标表的名称,数据将被导入目标表。
-
delimiter 是一个字符,它用于分隔 CSV 文件中的每条记录。
-
Enclosure 是一个字符,它用于在 CSV 文件中包围字符串记录。
-
line_seperator 是一个字符,它用于标记 CSV 文件中行的结束。
-
number_of_lines_to_skip 是在 CSV 文件开头要忽略的行数。
Example
首先,让我们使用以下查询创建一个名为 EMPLOYEES 的表 -
CREATE TABLE EMPLOYEES(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(25) NOT NULL,
SALARY DECIMAL(18, 2),
PRIMARY KEY(ID)
);
现在,我们向上面创建的表格插入行 -
INSERT INTO EMPLOYEES VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'MP', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );
得到的 EMPLOYESS 表如下所示 -
Export Data to CSV −
现在,我们使用以下查询将 EMPLOYEES 表中的数据导出到名为 “EMPLOYEES_BACKUP” 的 CSV 文件 -
SELECT * FROM EMPLOYEES
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/EMPLOYEES_BACKUP.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
执行上述查询后,CSV 格式文件将在指定路径处创建。以下是执行上述查询后获得的输出 -
Query OK, 7 rows affected (0.00 sec)
以下是我们在打开 “EMPLOYEES_BACKUP.csv” 文件时得到的图片 -
Create Another Table −
现在,让我们使用与 EMPLOYEES 表相同的列和数据类型创建另一个名为 "CUSTOMERS" 的表 -
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(25) NOT NULL,
SALARY DECIMAL(18, 2),
PRIMARY KEY(ID)
);
以下是上面代码的输出: -
Query OK, 0 rows affected (0.03 sec)
Import Data from CSV −
现在,我们使用以下查询从 “EMPLOYEES_BACKUP.csv” 文件中导入所有数据到 CUSTOMERS 表 -
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/EMPLOYEES_BACKUP.csv'
INTO TABLE CUSTOMERS
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
获得的结果如下 −
Query OK, 7 rows affected (0.01 sec)
Records: 7 Deleted: 0 Skipped: 0 Warnings: 0
Verify Data Import −
要验证是否已成功将数据导入到 CUSTOMERS 表,我们可以使用以下 SELECT 语句 -
SELECT * FROM CUSTOMERS;
正如我们在下面看到的输出,CUSTOMERS 表包含与 EMPLOYEES 表相同的数据,因为 CSV 数据已成功导入 -