我有一個非規格化格式的大型數據集。這裏是列名的例子:正常化mySQL中的表數據
foreign_key_ID,P1,P2,P3,P4,P5 .... D1,D2,D3 ....等。
這些字段都含有相似類型數據的。
我需要正常化到我現有的表結構如下:
insert into new_table (id, name, index)
select foreign_key_id, P1, 1
from denormalized_table;
但是,這意味着,我需要在我的非規範化表上運行的每個字段單獨的查詢,只是改變了一些東西:
insert into new_table (id, name, index)
select foreign_key_id, P2, 2
from denormalized_table;
考慮到我有多少這些領域,這會變得單調乏味。
有沒有一種方法可以自動進入單一操作?即:遍歷字段(我不介意在某個地方創建符合條件的字段的列表),拉出字段名稱的最後一位(即「P1」中的「1」和「P2」中的「2」)使用子選擇中的字段名稱和提取的索引號。
有趣。因此,您建議使用SQL來生成SQL,然後將其複製並粘貼到新的查詢中以實際執行插入操作? –
不,他的查詢結果會爲每行生成一條SQL語句,並且您可以遍歷該結果集並在返回的行上使用EXECUTE。查看我的關於動態SQL的文章。 – Richthofen
@Tom Auger:是的,對於一次性導入數據等管理功能,我將使用SQL和information_schema數據庫來幫助我生成SQL語句。 (我寧願那樣做,而不是做一堆繁瑣的編輯。) – spencer7593