首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据插入到在执行时不知道名称的数据库中

问将数据插入到在执行时不知道名称的数据库中
EN

Stack Overflow用户
提问于 2014-01-24 15:13:28
回答 2查看 72关注 0票数 0

作为应用程序安装程序的一部分,我需要将一些数据插入到已经存在的数据库中。数据库的结构是已知的,但是确切的名称是不知道的;也就是说,我知道需要插入的表的名称及其结构,但是db名称是可变的。

db名称的结构是:AppDB_<version#> (ex:AppDB_V20_1_2)。不幸的是,当安装此应用程序的新主要版本时,服务器上保留了以前的dbs,因此查询到:

代码语言:javascript
复制
SELECT name FROM master..sysdatabases WHERE name LIKE 'AppDB%'

返回多个结果。

是否可以创建一个查询,在整个结果范围内插入相同的表?

也就是说,如果我有数据库:

代码语言:javascript
复制
AppDB_V1
AppDB_V2
AppDB_V3

我是否可以编写一个有效地执行以下操作的查询:

代码语言:javascript
复制
INSERT INTO [AppDB_V1].[dbo].[TableName] ...
INSERT INTO [AppDB_V2].[dbo].[TableName] ...
INSERT INTO [AppDB_V3].[dbo].[TableName] ...

事先不知道AppDB的号码或名字?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-24 17:08:40

可以使用动态sql生成insert语句。看看执行者

查询数据库名称。然后使用游标遍历数据库名称并创建插入字符串。然后用sp_executesql执行它。

希望能帮上忙!

票数 2
EN

Stack Overflow用户

发布于 2014-01-24 20:16:05

因此,您可以生成一个动态sql语句:

声明@sql mvarchar(max);

设置@sql =N‘;

选择@sql = @sql + N',插入到‘+商号(db.name)+N’.dbot.able 1从dbo.SourceTable;‘+ char(13);

来自sys.databases db

db.name喜欢的地方。

设置@sql = stuff(@sql,1,1,N‘);

exec (@sql);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21336068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档