使用LOAD DATA INFILE语句循环导入CSV文件数据到数据库表,每次导入指定行数。
MySQL循环导入CSV文件数据到数据库表
单元1:准备工作
安装MySQL数据库并创建目标表
准备CSV文件,确保其格式与目标表结构一致
单元2:使用LOAD DATA INFILE语句导入CSV文件数据
步骤:
1、打开命令行终端或MySQL客户端工具。
2、连接到MySQL数据库。
3、执行以下LOAD DATA INFILE语句,将CSV文件数据导入到目标表中:
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名;
```
路径/文件名.csv是CSV文件的完整路径和名称,目标表名是要导入数据的数据库表名。
4、如果CSV文件中的数据以逗号分隔,可以使用FIELDS TERMINATED BY选项指定字段分隔符,
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名
FIELDS TERMINATED BY ',';
```
5、如果CSV文件中的数据以制表符分隔,可以使用FIELDS TERMINATED BY选项指定字段分隔符,
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名
FIELDS TERMINATED BY '\t';
```
6、如果CSV文件中包含列标题行,可以使用IGNORE 1 LINES选项忽略第一行作为列标题,
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名
FIELDS TERMINATED BY ',' IGNORE 1 LINES;
```
7、如果CSV文件中的数据包含特殊字符(如引号),可以使用ESCAPED BY选项指定转义字符,
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名
FIELDS TERMINATED BY ',' ESCAPED BY '"';
```
8、如果CSV文件中的数据包含空值,可以使用NULLIF选项指定空值的表示方式,
```sql
LOAD DATA INFILE '路径/文件名.csv' INTO TABLE 目标表名
FIELDS TERMINATED BY ',' NULLIF('空值', '');
```
9、如果需要循环导入多个CSV文件,可以使用循环语句结合LOAD DATA INFILE语句实现,
```sql
SET @path = '/path/to/csv/files/'; 设置CSV文件所在目录的路径变量
SET @file_name = 'file1.csv'; 设置要导入的第一个CSV文件名变量
SET @counter = 1; 设置计数器变量初始值为1
WHILE @counter <= X DO X为要导入的CSV文件数量
SET @full_path = @path || @file_name; 根据计数器生成完整的CSV文件路径
SET @sql = CONCAT('LOAD DATA INFILE '', @full_path, '' INTO TABLE 目标表名'); 构建LOAD DATA INFILE语句
PREPARE stmt FROM @sql; 预处理SQL语句
EXECUTE stmt; 执行SQL语句
SET @file_name = REPLACE(@file_name, 'file1.csv', 'file2.csv'); 根据计数器修改下一个CSV文件名变量的值
SET @counter = @counter + 1; 计数器加1,用于下一次循环导入下一个CSV文件
END WHILE;
```
上述代码中,X为要导入的CSV文件数量,可以根据实际需求进行修改,在循环中,通过计数器变量控制每次循环导入的CSV文件,同时修改文件名变量的值来选择不同的CSV文件进行导入。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/492247.html