私は多くの列を持つリレーショナルテーブルを持っています。 (import_table) このデータをすべてオブジェクト指向データベースに挿入しようとしています。リレーショナルテーブルからオブジェクト指向テーブルへの高速挿入
オブジェクト指向データベースは、テーブルを持っています
#table (tableId, name)
#row (rowId, table_fk)
#column(colId, table_fk, col_name)
#value(valueId, col_fk, row_fk)
これまでのところ私はimport_table INFORMATION_SCHEMAを読み、オブジェクト指向構造に正しく表や列を挿入する手順を作成しました。 次に、import-dataを余分なidentity-columnを持つtempテーブルにコピーして、row-idsを取得します。次に、すべての行を繰り返し、内部ループを使用して各列を反復処理し、インサートを実行します。カラム。このよう :
SELECT ROWID=IDENTITY(INT, 1, 1), * INTO #TEST
FROM import_table
DECLARE @COUNTER INT = 1
WHILE @COUNTER <= (SELECT COUNT(*) FROM #TEST)
BEGIN
INSERT INTO #ROW (ROWID, TABLE_FK) VALUES(@COUNTER, 1)
DECLARE @COLUMNCOUNTER INT = 1
WHILE @COLUMNCOUNTER <= (SELECT COUNT(*) FROM #COLUMN WHERE TABLE_FK = 1)
BEGIN
DECLARE @COLNAME NVARCHAR(254) = select col_name from #column where table_fk = 1 and rowid = @columnCounter
DECLARE @INSERTSQL NVARCHAR(1000) = 'insert into #value (column_fk, row_fk, value) select '+cast(@columnCounter as nvarchar(20))', '+cast(@counter as nvarchar(20))+', ' + @colName+' from #test where rowId = '+cast(@counter as nvarchar20))
exec (@insertSQL)
set @columncounter = @columncounter +1
end
set @counter = @counter +1
end
これは動作しますが、それは非常に遅いです。 物事をスピードアップする方法に関する提案はありますか?
が追加されました。助けてくれるといいですか? – user829237
「リレーショナル」と「オブジェクト指向」の用語を悪用していると思われます。 – onedaywhen