我有一个有很多列的关系表。 (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复制到带有额外标识列的临时表中,以获取行标识符。然后遍历所有行,使用内部循环遍历每列,并执行插入公关。柱。 喜欢这个:
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 2011-12-16 12:35:06
我怀疑你滥用术语“关系”和“面向对象”。 – onedaywhen 2011-12-16 15:24:44