Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用脚本将数据从一个数据库导入到另一个数据库?_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 如何使用脚本将数据从一个数据库导入到另一个数据库?

Sql 如何使用脚本将数据从一个数据库导入到另一个数据库?,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个数据库DocData大小为8GB。我想使用导入导出向导将三个表从DocData移动到另一个数据库DocData2,而不使用out 这些表中的标识列。我想使用脚本移动它,并使用identity列复制数据。其中一个表的大小是7GB 我正在使用这个查询 CREATE TABLE [DocData2].[dbo].DocumentPages AS SELECT * FROM [DocData].[dbo].[DocumentPages] 但是我得到了以下错误 Incorrect synta

我有一个数据库DocData大小为8GB。我想使用导入导出向导将三个表从DocData移动到另一个数据库DocData2,而不使用out 这些表中的标识列。我想使用脚本移动它,并使用identity列复制数据。其中一个表的大小是7GB

我正在使用这个查询

CREATE TABLE [DocData2].[dbo].DocumentPages AS 
SELECT  * FROM [DocData].[dbo].[DocumentPages]
但是我得到了以下错误

Incorrect syntax near the keyword 'SELECT'.
来自BOL

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  ON
你在这儿插页吗

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  OFF

您需要运行以下语句

假设:

  • 两个数据库都存在于同一台服务器上
  • 目标数据库
    DocumentPages
    中不存在目标表
    DocData2
脚本:

您的问题:


无法使用问题中的脚本创建表。没有任何选项可以接受SELECT输出以这种方式创建新表

只有当两个数据库位于同一服务器上时,才能执行此操作。如果它们位于不同的服务器上,则需要使用其他技术,如链接服务器或SSIS包

也就是说,您需要首先创建[DocData2][dbo].DocumentPages表,然后将数据从一个表复制到另一个表

insert into [DocData2].[dbo].[DocumentPages]
select * from  [DocData].[dbo].[DocumentPages]

请使用此脚本

SELECT * INTO [DocData2].[dbo].DocumentPages FROM [DocData].[dbo].[DocumentPages]

.

如果需要精确的副本,则编写表脚本(右键单击对象brwoser中的表,您将看到创建脚本的选项)及其所有索引、约束等(您可能需要单独编写索引脚本),然后通过运行脚本创建表,然后编写一条与@Diego类似的insert语句(仅指定列,插入应指定列)


当然,如果您正确地管理数据库,您可能已经在源代码管理中使用了该脚本。至少现在就开始使用这些脚本执行此操作。

这根本不是该语句所做的。@JohnN请解释为什么这是错误的。问题语句包括标识列。如果标识值中存在任何间隙,请那么这就是如何处理的问题了。+1确实如此,我在问题中完全忽略了这一点。坦率地说,这是一个糟糕的选择,因为它不会创建索引或除标识之外的其他约束。
SELECT * INTO [DocData2].[dbo].DocumentPages FROM [DocData].[dbo].[DocumentPages]