怎么在MySQL里用循环语句将多个csv表格合并成一个表
时间: 2023-02-08 07:02:39 浏览: 478
可以使用 MySQL 的 LOAD DATA INFILE 语句将 CSV 文件导入到 MySQL 表中。首先,在 MySQL 中创建一个空表,其结构与要导入的 CSV 文件相同。然后,使用 LOAD DATA INFILE 语句将 CSV 文件导入到新表中。
下面是一个示例,假设要将多个 CSV 文件合并到名为 "combined_table" 的表中:
```
LOAD DATA INFILE '/path/to/csv1.csv' INTO TABLE combined_table;
LOAD DATA INFILE '/path/to/csv2.csv' INTO TABLE combined_table;
LOAD DATA INFILE '/path/to/csv3.csv' INTO TABLE combined_table;
```
您可以使用循环语句将上述语句包含在其中,以便自动遍历所有 CSV 文件。例如,您可以使用以下语句:
```
FOR i IN 1..3 LOOP
SET @filename = CONCAT('/path/to/csv', i, '.csv');
LOAD DATA INFILE @filename INTO TABLE combined_table;
END LOOP;
```
请注意,上述语法仅适用于 MySQL。对于其他数据库系统,您可能需要使用其他语法。
相关问题
怎么在MySQL里用循环语句将多个csv表格合并成一个表,表名中间的几个字符是主键的一部分
可以使用如下的 MySQL 语句来实现:
```
CREATE TABLE merged_table (
`id` int(11) NOT NULL AUTO_INCREMENT,
`key_part` varchar(255) DEFAULT NULL,
`col1` varchar(255) DEFAULT NULL,
`col2` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
LOAD DATA INFILE 'file1.csv'
INTO TABLE merged_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
LOAD DATA INFILE 'file2.csv'
INTO TABLE merged_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
LOAD DATA INFILE 'file3.csv'
INTO TABLE merged_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
```
如果要在循环中执行这些语句,可以使用 MySQL 的 PREPARE 语句和 EXECUTE 语句。
例如,以下代码假设已经有一个变量 `@filename` 存储了当前要加载的文件的名称:
```
SET @sql_text = CONCAT('LOAD DATA INFILE ''', @filename, ''' INTO TABLE merged_table FIELDS TERMINATED BY '','' LINES TERMINATED BY ''\n'' IGNORE 1 ROWS;');
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
```
在循环中,可以更新 `@filename` 的值,然后重复执行 PREPARE 和 EXECUTE 语句,以实现将多个 CSV 文件加载到同一个表中的目的。
阅读全文