Answers:
在SQL Server上?在同一数据库服务器上?使用三部分命名。
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
这只是移动数据。如果要移动表定义(以及其他属性,例如权限和索引),则必须执行其他操作。
SQL Server Management Studio的“导入数据”任务(右键单击数据库名称,然后单击任务)将为您完成大部分任务。从您要将数据复制到的数据库中运行它。
如果这些表不存在,它将为您创建它们,但是您可能必须重新创建任何索引等。如果这些表确实存在,则默认情况下它将添加新数据,但是您可以对其进行调整(编辑映射),以便删除所有现有数据。
我一直在使用它,并且效果很好。
WHERE
使用“导入数据”任务指定条件?我无法找到一种方法。
这应该工作:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
它不会复制内容,默认值或索引。创建的表将没有聚集索引。
或者,您可以:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
如果目标表存在并且为空。
INSERT INTO...
)在Oracle中对我有用。
如果只有一张桌子,那么您要做的就是
您必须考虑的一件事是其他更新,例如将来迁移其他对象。请注意,您的源表和目标表名称不同。这意味着,如果您依赖于对象(例如视图,存储过程等),则还必须进行更改。
如果不需任何问题,您就可以手动去掉一个或几个对象。但是,当更新不只几个时,第三方比较工具会非常方便。现在,我正在使用ApexSQL Diff进行模式迁移,但是使用其他任何工具都不会出错。
脚本的create table
管理工作室,运行该脚本在酒吧创建表。(在对象资源管理器中右键单击表,将脚本表另存为,创建为...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
SET IDENTITY_INSERT TblName ON
在这种情况下,您还需要这样做。
您还可以使用“ 生成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 * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
如果两个数据库都在同一服务器中,则服务器名称是可选的。
复制资料
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details