【发布时间】:2021-09-08 18:05:07
【问题描述】:
所以我有一个我想要的表列表(带有通配符)
CREATE TABLE [config].[datalist](
[id] [int] IDENTITY(1,1) NOT NULL,
[order] [int] NULL,
[dbname] sysname NULL,
[schemaname] sysname NULL,
[tablename] sysname NULL
)
GO
SET IDENTITY_INSERT [config].[datalist] ON
GO
INSERT [config].[datalist] ([id], [order], [dbname], [schemaname], [tablename]) VALUES (1, 1, N'TEST', N'audit*', N'*')
GO
INSERT [config].[datalist] ([id], [order], [dbname], [schemaname], [tablename]) VALUES (7, 2, N'TEST', N'conversie', N'BR')
GO
INSERT [config].[datalist] ([id], [order], [dbname], [schemaname], [tablename]) VALUES (8, 3, N'TEST', N'datalibrary', N'T*')
GO
INSERT [config].[datalist] ([id], [order], [dbname], [schemaname], [tablename]) VALUES (9, 3, N'BIML', N'*', N'*')
GO
SET IDENTITY_INSERT [config].[datalist] OFF
GO
SELECT [id]
,[order]
,[dbname]
,[schemaname]
,[tablename]
FROM [UITWISSEL].[config].[datalist]
这给了我
id order dbname schemaname tablename
1 1 TEST audit* *
7 2 TEST conversie BR
8 3 TEST datalibrary T*
9 3 BIML * *
现在我需要的是表格config.datalist中提到的所有表格的列表
所以我想要一个列表:
id 1) 数据库TEST 中schemaname 以audit 开头的所有表
id 7) 模式 conversie 中数据库 TEST 中名称为 BR 的所有表
id 8) 数据库TEST 中模式“datalibrary”中名称以T 开头的所有表
id 9) 数据库BIML 中所有架构中的所有表
我有以下代码,但这仅适用于数据库BIML。
如何让这段代码适用于 config.datalist.dbname 中提到的所有数据库?
select distinct t.name as TableName
, 'SELECT * FROM ' + quotename(replace(replace(ds.[dbname] ,'[',''),']',''))+'.'+
quotename(s.name)+'.'+
quotename(t.name) AS selectquery
,s.name as schemaname
,ds.[order]
from BIML.sys.schemas s
left join BIML.sys.tables t on s.schema_id = t.schema_id
inner join [UITWISSEL].[config].[datalist] ds on s.name like replace(ds.schemaname,'*','%') COLLATE DATABASE_DEFAULT
inner join [UITWISSEL].[config].[datalist] dt on t.name like replace(ds.tablename,'*','%') COLLATE DATABASE_DEFAULT
order by ds.[order] , s.name, t.name
这给了我
TableName selectquery schemaname order
connections SELECT * FROM [BIML].[config].[connections] config 3
FilesToImport SELECT * FROM [BIML].[config].[FilesToImport] config 3
【问题讨论】:
标签: sql dynamic-sql sql-server-2019