使用 Temp Table 合并来自不同数据库的查询结果
Use Temp Table to merge query results from different DBs
我需要将不同数据库中的数据提取到一个数据库中 table。这些数据库都在同一个服务器和实例中,它们具有相同的结构。其中一列将是数据库名称,其他列来自相同的 table.
我可以编写一个查询,为每个数据库使用 table 提取这些数据,但我想将所有结果合并到一个 table.
我尝试使用临时 table 来保存单个结果,但结果是空的 table。似乎 table #tmpTable 在每次查询后都被清空了。我 post 这里是我的尝试:
CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX), [Example] VARCHAR(MAX))
EXECUTE sp_MSForEachDB
'USE ?;
DECLARE @ExampleQuery AS NVARCHAR(MAX) =
''SELECT DB_NAME() AS [DbName], [Example]
INTO #tmpTable
FROM [tConfig]''
EXEC sp_executesql @ExampleQuery;'
SELECT * FROM #tmpTable
DROP TABLE #tmpTable
实际查询更复杂,它使用 PIVOT 和其他命令,但我认为如果有人知道如何获得想要的结果,这个例子就足够了。
CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX))
EXECUTE sp_MSForEachDB
'USE ?;
DECLARE @ExampleQuery AS NVARCHAR(MAX) =
''INSERT INTO #tmpTable SELECT DB_NAME() AS [DbName] ''
EXEC sp_executesql @ExampleQuery;'
SELECT * FROM #tmpTable
DROP TABLE #tmpTable
我需要将不同数据库中的数据提取到一个数据库中 table。这些数据库都在同一个服务器和实例中,它们具有相同的结构。其中一列将是数据库名称,其他列来自相同的 table.
我可以编写一个查询,为每个数据库使用 table 提取这些数据,但我想将所有结果合并到一个 table.
我尝试使用临时 table 来保存单个结果,但结果是空的 table。似乎 table #tmpTable 在每次查询后都被清空了。我 post 这里是我的尝试:
CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX), [Example] VARCHAR(MAX))
EXECUTE sp_MSForEachDB
'USE ?;
DECLARE @ExampleQuery AS NVARCHAR(MAX) =
''SELECT DB_NAME() AS [DbName], [Example]
INTO #tmpTable
FROM [tConfig]''
EXEC sp_executesql @ExampleQuery;'
SELECT * FROM #tmpTable
DROP TABLE #tmpTable
实际查询更复杂,它使用 PIVOT 和其他命令,但我认为如果有人知道如何获得想要的结果,这个例子就足够了。
CREATE TABLE [dbo].#tmpTable ([DbName] VARCHAR(MAX))
EXECUTE sp_MSForEachDB
'USE ?;
DECLARE @ExampleQuery AS NVARCHAR(MAX) =
''INSERT INTO #tmpTable SELECT DB_NAME() AS [DbName] ''
EXEC sp_executesql @ExampleQuery;'
SELECT * FROM #tmpTable
DROP TABLE #tmpTable