怎么在MySQL里用循环语句将多个csv表格合并成一个表,表名中间的几个字符是主键的一部分
时间: 2023-02-08 14:02:37 浏览: 112
可以使用如下的 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 文件加载到同一个表中的目的。
阅读全文