我有一个名为foo的数据库和一个名为bar的数据库。 我在foo中有一个名为tblFoobar的表,我想从数据库foo移动(数据和全部)到数据库栏。 执行此操做的SQL语句是什么? 数据库
你能够这样走:(通常的例子) 服务器
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB) Select columnA, columnB from DeveloperDB.dbo.Customers
此外,若是您还须要生成列名以及insert子句,请使用: 架构
select (name + ',') as TableColumns from sys.columns where object_id = object_id('YourTableName')
复制结果并粘贴到查询窗口以表示您的表列名称,甚至这也将排除标识列: ide
select (name + ',') as TableColumns from sys.columns where object_id = object_id('YourTableName') and is_identity = 0
请记住,若是数据库属于同一位置,则复制行的脚本将起做用。 工具
你能够尝试这个。 spa
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
若是两个DB位于同一服务器中,则服务器名称是可选的 code
若是它只是一个表,那么你须要作的就是 对象
您须要考虑的一件事是其余更新,例如未来迁移其余对象。 请注意,源表和目标表的名称不一样。 这意味着若是依赖于视图,存储过程等依赖对象,您还必须进行更改。 索引
使用一个或多个对象,能够手动进行,无任何问题。 然而,当不单单是一些更新时,第三方比较工具很是方便。 如今我正在使用ApexSQL Diff进行架构迁移,可是你不能错过任何其余工具。 资源
在SQL Server上? 并在同一个数据库服务器上? 使用三部分命名。
INSERT INTO bar..tblFoobar( *fieldlist* ) SELECT *fieldlist* FROM foo..tblFoobar
这只是移动数据。 若是要移动表定义(以及权限和索引等其余属性),则必须执行其余操做。
这应该工做:
SELECT * INTO DestinationDB..MyDestinationTable FROM SourceDB..MySourceTable
它不会复制constaints,默认值或索引。 建立的表将没有汇集索引。
或者你能够:
INSERT INTO DestinationDB..MyDestinationTable SELECT * FROM SourceDB..MySourceTable
若是目标表存在且为空。
在管理工做室中编写create table
脚本,在bar中运行该脚本以建立表。 (右键单击对象资源管理器中的表,脚本表为,建立到...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table