0
有沒有人見過任何示例SQL Server代碼「一般」使用多個表追加記錄?追加到幾個表
我們有一個奇怪的過程,我們在這裏使用一組十幾張「當前」數據和一組與「先前」數據匹配的表(我知道有更好的方法來做到這一點,但這是我必須處理的)。
我必須每週將記錄從「當前」表格集合移動到它們的「先前」對應表格,但我不想爲每個表格分別爲每個表格創建一系列所有字段都很難的INSERT INTO語句爲每一個編碼。
謝謝!
有沒有人見過任何示例SQL Server代碼「一般」使用多個表追加記錄?追加到幾個表
我們有一個奇怪的過程,我們在這裏使用一組十幾張「當前」數據和一組與「先前」數據匹配的表(我知道有更好的方法來做到這一點,但這是我必須處理的)。
我必須每週將記錄從「當前」表格集合移動到它們的「先前」對應表格,但我不想爲每個表格分別爲每個表格創建一系列所有字段都很難的INSERT INTO語句爲每一個編碼。
謝謝!
以下腳本將基於「表名稱表」動態創建INSERT語句。會這樣嗎?雖然它不考慮源數據庫名稱或目標數據庫,但是我相信如果您需要,可以調整腳本。
CREATE TABLE #table_of_tables(
src_table_name SYSNAME NOT NULL PRIMARY KEY,
dest_table_name SYSNAME NOT NULL
);
--INSERT INTO #table_of_tables(src_table_name,dest_table_name)VALUES('src_table','dest_table');
DECLARE @copy_stmts NVARCHAR(MAX) = (
SELECT
';INSERT INTO ' + QUOTENAME(dest_table_name) + '('+cols+') SELECT ' + cols + ' FROM ' + QUOTENAME(src_table_name)
FROM
(
SELECT
tot.src_table_name,
tot.dest_table_name,
cols=STUFF(
(SELECT ','+QUOTENAME(c.COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS AS c WHERE c.TABLE_NAME=t.TABLE_NAME FOR XML PATH('')),
1,
1,
''
)
FROM
#table_of_tables AS tot
INNER JOIN INFORMATION_SCHEMA.TABLES AS t ON
t.TABLE_NAME=tot.src_table_name AND
t.TABLE_TYPE='BASE TABLE'
) AS tbd
FOR
XML PATH('')
);
--SELECT @copy_stmts; --> select to verify statements
EXEC sp_executesql @copy_stmts; --> to launch the insert statements
DROP TABLE #table_of_tables;
某種類型的複製/同步? – jarlh
是[這個腳本](http://stackoverflow.com/a/2179622/87698)你在找什麼? – Heinzi
可能的重複[如何將一個表中的所有字段複製到另一個SQL Server 2005 Express中更寬的表?](http://stackoverflow.com/questions/2179463/how-can-i-copy-all-fields -of-one-table-to-another-wide-table-in-sql-server-200) – Heinzi