每個月我們都會得到一個包含300列以上的CSV文件。該文件的佈局可以隨時更改,並且可以添加/刪除列。我需要一種創建包含所需列數的動態表的方法。我不關心列名稱,他們可以是Column1,Column2等。我打算將所有類型設置爲Varchar(500)。MySQL動態表問題
理想情況下,我想要完成的是一個存儲過程,我只需傳遞所需的列數,它將循環創建必要的表定義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;
我想的東西接近,但我真正需要的是創建一個表列的任何給定數量的能力。
謝謝!
讓你的列名爲Column1和Column2是一個不好的做法。爲什麼不使用'@tableColumns VARCHAR(8000)'參數,其中每個列名都會被逗號分隔? –