我有一个名为foo的数据库和一个名为bar的数据库。我有一个表在foo叫tblFoobar,我想移动(数据和所有)数据库酒吧从数据库foo。执行此操作的SQL语句是什么?
当前回答
我给你三个选择:
如果是同一个实例上的两个数据库:
SELECT * INTO My_New_Table FROM [HumanResources].[Department];
如果它们是不同服务器上的两个数据库,并且你有链接服务器,那么:
SELECT * INTO My_New_Table FROM [ServerName].[AdventureWorks2012].[HumanResources].[Department];
如果它们是不同服务器上的两个数据库,并且你没有链接服务器,那么:
SELECT * INTO My_New_Table
FROM OPENROWSET('SQLNCLI', 'Server=My_Remote_Server;Trusted_Connection=yes;',
'SELECT * FROM AdventureWorks2012.HumanResources.Department');
其他回答
这应该可以工作:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
它不会复制约束、默认值或索引。创建的表将没有聚集索引。
或者你可以:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
如果目标表存在且为空。
SQL Server Management Studio的“Import Data”任务(右键单击DB名称,然后单击tasks)将为您完成大部分工作。在要将数据复制到的数据库中运行它。
如果表不存在,它将为您创建它们,但您可能必须重新创建索引等。如果表确实存在,它将默认添加新数据,但您可以调整(编辑映射),这样它将删除所有现有数据。
我一直在用这个,而且效果很好。
在SQL Server上?在同一个数据库服务器上?使用三部分命名。
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
这只是移动数据。如果希望移动表定义(以及权限和索引等其他属性),则必须执行其他操作。
我给你三个选择:
如果是同一个实例上的两个数据库:
SELECT * INTO My_New_Table FROM [HumanResources].[Department];
如果它们是不同服务器上的两个数据库,并且你有链接服务器,那么:
SELECT * INTO My_New_Table FROM [ServerName].[AdventureWorks2012].[HumanResources].[Department];
如果它们是不同服务器上的两个数据库,并且你没有链接服务器,那么:
SELECT * INTO My_New_Table
FROM OPENROWSET('SQLNCLI', 'Server=My_Remote_Server;Trusted_Connection=yes;',
'SELECT * FROM AdventureWorks2012.HumanResources.Department');
您还可以使用生成SQL Server脚本向导来帮助指导SQL脚本的创建,可以执行以下操作:
复制表模式 任何约束(标识、默认值等) 表中的数据 如果需要,还有许多其他选择
SQL Server 2008的一个很好的工作流示例,屏幕截图显示在这里。
推荐文章
- 如果字段在MySQL中为空,则返回0
- 检查SQL Server登录是否已经存在
- 我如何使用ROW_NUMBER()?
- SQL或者TSQL是图灵完备的吗?
- 如何检查表上持有哪些锁
- 对于PostgreSQL表来说,多大才算太大?
- SQL Server数据库备份恢复到低版本
- 在MySQL中检测值是否为number
- MySQL中两个日期之间的差异
- SQL Server:过滤sp_who2的输出
- 使用SQL查询查找最近的纬度/经度
- 在SQL Server上使用varchar(MAX) vs TEXT
- Visual Studio: ContextSwitchDeadlock
- 模式、表和数据库之间的区别是什么?
- Sql Server字符串到日期的转换