【发布时间】:2017-05-19 07:38:34
【问题描述】:
我有一个关于 SQL Server 的问题:如何动态更改数据库名称并使用一个 select 和 insert 语句使用存储过程加载数据。
如何在将表数据加载到另一个表时使用insert和select语句更改数据库名称?
这里将每个数据库名相关的表加载到与数据库名相关的目标表中。
即数据库:测试和源表:emp目标表是:emptarget这里emp表记录加载到emptarget类似于另一个数据库
数据库名称信息维护一张表。
USE [test]
GO
CREATE TABLE [dbo].[databaseinformation]
(
[id] [int] NULL,
[databasename] [varchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[databaseinformation] ([id], [databasename])
VALUES (1, N'test'), (2, N'test1')
GO
表 1:来源:emp 和 datbasename:test
USE [test]
CREATE TABLE [dbo].[emp]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
INSERT [dbo].[emp] ([id], [name], [sal])
VALUES (19, N'hd', 40), (1, N'g', 10),
(9, N'dk', 90), (80, N'dhe', 80)
GO
目标表:emptarget 和数据库名称:test
USE [test]
CREATE TABLE [dbo].[emptarget]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
----table 2: emp and databasename: test1
USE [test]
CREATE TABLE [dbo].[emp]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
INSERT [dbo].[emp] ([id], [name], [sal])
VALUES (50, N'kl', 80), 39, N'abc', 10)
go
目标表:emptarget 和数据库名称:test1
USE [test1]
CREATE TABLE [dbo].[emptarget]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
最后需要像下面这样加载数据
数据库:测试和表:emptarget
id |name |sal
19 |hd |40
1 |g |10
9 |dk |90
80 |dhe |80
数据库:test1 和表:emptarget
id |name |sal
50 |kl |80
39 |abc |10
我尝试如下
USE [test]
GO
insert into emptarget
select * from emp
USE [test1]
GO
insert into emptarget
select * from emp
这里我不想分别运行两个查询。我需要使用单个 select 和 insert 语句运行查询,以使用数据库加载数据对应表。
请告诉我如何编写查询以在 SQL Server 中完成此任务
【问题讨论】:
标签: tsql sql-server-2012