我有一個名爲foo的數據庫和一個名爲bar的數據庫。 我在foo中有一個名爲tblFoobar的表,我想從數據庫foo移動(數據和全部)到數據庫欄。 執行此操做的SQL語句是什麼? 數據庫
你能夠這樣走:(通常的例子) 服務器
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')
複製結果並粘貼到查詢窗口以表示您的表列名稱,甚至這也將排除標識列: ide
select (name + ',') as TableColumns from sys.columns where object_id = object_id('YourTableName') and is_identity = 0
請記住,若是數據庫屬於同一位置,則複製行的腳本將起做用。 工具
你能夠嘗試這個。 spa
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
若是兩個DB位於同一服務器中,則服務器名稱是可選的 code
若是它只是一個表,那麼你須要作的就是 對象
您須要考慮的一件事是其餘更新,例如未來遷移其餘對象。 請注意,源表和目標表的名稱不一樣。 這意味着若是依賴於視圖,存儲過程等依賴對象,您還必須進行更改。 索引
使用一個或多個對象,能夠手動進行,無任何問題。 然而,當不單單是一些更新時,第三方比較工具很是方便。 如今我正在使用ApexSQL Diff進行架構遷移,可是你不能錯過任何其餘工具。 資源
在SQL Server上? 並在同一個數據庫服務器上? 使用三部分命名。
INSERT INTO bar..tblFoobar( *fieldlist* ) SELECT *fieldlist* FROM foo..tblFoobar
這只是移動數據。 若是要移動表定義(以及權限和索引等其餘屬性),則必須執行其餘操做。
這應該工做:
SELECT * INTO DestinationDB..MyDestinationTable FROM SourceDB..MySourceTable
它不會複製constaints,默認值或索引。 建立的表將沒有彙集索引。
或者你能夠:
INSERT INTO DestinationDB..MyDestinationTable SELECT * FROM SourceDB..MySourceTable
若是目標表存在且爲空。
在管理工做室中編寫create table
腳本,在bar中運行該腳本以建立表。 (右鍵單擊對象資源管理器中的表,腳本表爲,建立到...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table