2012-05-01 64 views
1

我有一個數據庫DocData大小與8 GB。我想將DocData的三個表格移動到另一個數據庫DocData2,但不使用這些表中的導入導出嚮導和 標識列。我想要使​​用腳本移動它,並使用標識列複製數據。其中一個表的大小是7 GB。如何使用腳本將數據從一個數據庫導入到另一個數據庫?

我使用此查詢

CREATE TABLE [DocData2].[dbo].DocumentPages AS 
SELECT * FROM [DocData].[dbo].[DocumentPages] 

,但我收到以下錯誤。

Incorrect syntax near the keyword 'SELECT'. 

回答

3

FROM BOL

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

執行插入這裏

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

這完全不符合這種說法。 –

+1

@JohnN請解釋爲什麼這是不正確的。問題陳述包括標識列。如果身份值存在任何差距,那就是如何處理這個問題。 +1 – Paparazzi

+0

所以,我完全錯過了這個問題。 –

2

你需要運行下面的語句。

假設

  • 無論你的數據庫在同一臺服務器上存在。
  • 目標表DocumentPages不存在在你的目標數據庫DocData2

腳本

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

您的問題

使用腳本不能創建表在問題中。 CREATE TABLE沒有任何選項來接受SELECT輸出以這種方式創建新表。

0

如果兩個數據庫位於同一臺服務器上,則只能這樣做。如果他們在不同的服務器上,則需要使用鏈接服務器或SSIS包等其他技術。

話雖這麼說,你需要先創建[DocData2] [DBO] .DocumentPages表,然後從一個表中的數據複製到另一個

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

請使用這個腳本。

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

Read here to know more about SELECT INTO

+0

坦率地說,這是一個糟糕的選擇,因爲它不會創建除身份之外的索引或其他約束。 – HLGEM

0

如果您想要一個精確的副本,然後腳本表(右鍵單擊對象brwoser中的表,您將看到創建腳本的選項)及其所有索引,約束等(您可能需要腳本單獨編制索引),然後通過運行腳本創建表,然後編寫像@Diego所做的插入語句(只指定列,插入shoudl alawys指定列)。

當然,如果你是正確地管理你的數據庫,你已經有了源代碼管理腳本。至少現在就開始用這些腳本來做到這一點。

相關問題