我有一个名为foo的数据库和一个名为bar的数据库.我在foo中有一个名为tblFoobar的表,我想从数据库foo移动(数据和所有)到数据库栏.执行此操作的SQL语句是什么?
SQL Server Management Studio的"导入数据"任务(右键单击数据库名称,然后单击任务)将为您完成大部分任务.从要将数据复制到的数据库中运行它.
如果表不存在,它将为您创建它们,但您可能必须重新创建任何索引等.如果表存在,它将默认附加新数据,但您可以调整(编辑映射),以便删除所有现有数据.
我一直使用它,它运作得相当好.
在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
如果目标表存在且为空.
如果它只是一个表,那么你需要做的就是
脚本表定义
在另一个数据库中创建新表
更新规则,索引,权限等
导入数据(上面已经显示了几个插入示例)
您需要考虑的一件事是其他更新,例如将来迁移其他对象.请注意,源表和目标表的名称不同.这意味着如果依赖于视图,存储过程等依赖对象,您还必须进行更改.
使用一个或多个对象,可以手动进行,无任何问题.然而,当不仅仅是一些更新时,第三方比较工具非常方便.现在我正在使用ApexSQL Diff进行架构迁移,但是你不能错过任何其他工具.
脚本的create table
管理工作室,运行该脚本在酒吧创建表.(右键单击对象资源管理器中的表,脚本表为,创建为...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
您还可以使用" 生成SQL Server脚本向导"来帮助指导创建可执行以下操作的SQL脚本:
复制表架构
任何约束(身份,默认值等)
表中的数据
以及其他许多选择
SQL Server 2008的良好示例工作流程,此处显示屏幕截图.
你可以这样走:(一般的例子)
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')
复制结果并粘贴到查询窗口以表示您的表列名称,甚至这也将排除标识列:
select (name + ',') as TableColumns from sys.columns where object_id = object_id('YourTableName') and is_identity = 0
请记住,如果数据库属于同一位置,则复制行的脚本将起作用.
你可以尝试这个.
select * intofrom . .dbo.
如果两个DB位于同一服务器中,则服务器名称是可选的