我想将数据复制到新数据库。但是,在应该放置数据的过程中包括另一个表。
旧表:
DB1
。dbo
。pages
(id,title,content)
新表:
DB2
。dbo
。Page
(id)
DB2
。dbo
。Content
(id,pageid,title,content)
如何在pages
和 Page
中分割/存储来自Content
的所有数据?
答案 0 :(得分:1)
什么是pageid?是来自Page?
的id如果是这样,并且这假定内容表中的id是标识
insert into DB2.dbo.Page (id)
select id from DB1.dbo.pages
insert into DB2.dbo.Content(pageid, title, content)
select id, title, content from DB1.dbo.pages
这个设计仍然有点困惑
答案 1 :(得分:1)
是的,可以使用OUTPUT子句chain two inserts:
设置:
create table Page (id int )
create table Content (id int , pageid int, title varchar(100), content varchar(max))
create table pages (id int, title varchar(100), content varchar(max))
insert into pages values (1, 'Lorem', 'Ipsum');
insert into pages values (2, 'eum', 'aliquam vivendo placerat ad');
实际插入:
insert into Content (id, pageid, title, content)
output inserted.pageid into Page(id)
select id, id, title, content from pages;
证明:
select * from Page;
select * from Content;
这实际上很有用,因为这两个插入位于单个语句中,因此它们会自动包含在隐式事务中。
答案 2 :(得分:0)
不可能直接。如果您的选择很昂贵,您可以考虑将其插入临时表中,然后插入到事务内的最终表中。
答案 3 :(得分:0)
你可以用两个单独的请求吗?这样做:
插入db2.dbo.page 从db1.dbo.pages
中选择id和
插入db2.dbo.content(id_page,title,content) 从db1.dbo.pages
中选择id,title,content我想这应该可行。