我正在尝试编写一个脚本,它将生成一组动态插入语句。有些表非常大(80,000,000行)。
我希望从生产中填充我的开发环境,而我没有空间进行完整备份和恢复。
我想要每张桌子的前1000行。不确定是否必须进入组合插入脚本。
这是我到目前为止所拥有的......
--Select Tables and Columns Names
SELECT t.name,
c.column_id AS column_id,
c.name AS column_name
INTO #TEMP
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
ORDER BY t.name,c.column_id
--Concatenate Column Names into String
Select distinct ST2.name,
substring((Select ','+ST1.column_name AS [text()]
From #TEMP ST1
Where ST1.name = ST2.NAME
ORDER BY ST1.column_id
For XML PATH ('')),2, 1000) [INSERT]
INTO #TEMP3
From #TEMP ST2
--Build being of Insert statement
SELECT 'INSERT INTO dbo.' + t.name + ' (' + t.[INSERT] + ') VALUES ('
FROM #TEMP3 t
--Build Select 1000 from each Table.
SELECT 'SELECT TOP 1000 '''+t.name+''' AS TB_NAME,* FROM dbo.' + t.name
FROM #TEMP3 t
ORDER BY t.name
我想弄清楚的是如何将从Select 1000返回的实际值连接到INT,VARCHAR或FLOAT文本/数字限定值,然后将其添加到Insert Statement并输出为TEXT .. .so我可以保存文件并在我的开发计算机上运行它。
有什么想法吗?
由于 jlimited