每个月我们都会收到一个包含 300 多列的 CSV 文件。文件的布局可以随时更改,并且可以添加/删除列。我需要一种方法来创建一个动态表,其中包含所需的确切列数。我不关心列名,它们可以是 Column1、Column2 等。我计划将所有类型设置为 Varchar(500)。
理想情况下,我想要完成的是一个存储过程,我可以简单地传入所需的列数,它将循环创建必要的表定义 sql,然后执行该 sql。
甚至有可能做到这一点吗?我已经开始写以下内容:
BEGIN
Declare loopvar int default 1;
Declare tsql VarChar(5000);
Declare table_definition VarChar(8000);
Declare tablename varchar(20);
Set table_definition = 'Column';
set tablename = 'npi_data';
Set loopvar = 1;
While loopVar < 362 DO
set tsql = table_definition + loopvar + 'varchar(500) DEFAULT NULL' ;
set loopvar = loopvar + 1;
end while;
set tsql = 'CREATE TABLE' + tablename + '(' + tsql + ') ENGINE=InnoDB DEFAULT CHARSET=utf8';
execute tsql;
END;
我想要一些接近的东西,但我真正需要的是能够创建一个包含任何给定列数的表。
谢谢!