我有一个名为foo的数据库和一个名为bar的数据库。我有一个表在foo叫tblFoobar,我想移动(数据和所有)数据库酒吧从数据库foo。执行此操作的SQL语句是什么?
当前回答
你可以这样做:(一个一般的例子)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
此外,如果你需要生成列名,以及插入子句,使用:
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>
如果两个DB在同一服务器上,则“服务器名称”为可选参数。
其他回答
在SQL Server上?在同一个数据库服务器上?使用三部分命名。
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
这只是移动数据。如果希望移动表定义(以及权限和索引等其他属性),则必须执行其他操作。
你可以这样做:(一个一般的例子)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
此外,如果你需要生成列名,以及插入子句,使用:
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>
如果两个DB在同一服务器上,则“服务器名称”为可选参数。
我给你三个选择:
如果是同一个实例上的两个数据库:
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 Management Studio的“Import Data”任务(右键单击DB名称,然后单击tasks)将为您完成大部分工作。在要将数据复制到的数据库中运行它。
如果表不存在,它将为您创建它们,但您可能必须重新创建索引等。如果表确实存在,它将默认添加新数据,但您可以调整(编辑映射),这样它将删除所有现有数据。
我一直在用这个,而且效果很好。
这应该可以工作:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
它不会复制约束、默认值或索引。创建的表将没有聚集索引。
或者你可以:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
如果目标表存在且为空。
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 用于查找计数为>的记录的SQL查询
- “从Table1左连接Table2”和“从Table2右连接Table1”可以互换吗?
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- SQL变量保存整数列表
- 自然连接和内部连接的区别
- MySQL现在()+1天
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 如何在SQL中从DateTime格式获取时间?
- 外键约束:何时使用ON UPDATE和ON DELETE