脚本插入语句在数据库中的每个表中排名前1000行

时间:2013-11-16 04:24:34

标签: sql sql-server dynamic-data

我正在尝试编写一个脚本,它将生成一组动态插入语句。有些表非常大(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

0 个答案:

没有答案