2014-01-28 40 views
0

我有一個數據庫名「EmpOld」使用表名「Employee」和數據庫名稱「EmpNew」使用表名「Employee」怎麼辦。你從一個數據庫複製SQL表到另一個數據庫與不同的字段名

除了表中的名稱,表結構在兩個數據庫表上都是相同的。

這裏是表的定義:

數據庫 「EmpOld」 表名 「Employee」 有以下字段名稱:

int  e_id 
char(20) e_fname 
char(25) e_lname 

數據庫 「EmpNew」 表 「Employee」 有以下字段名稱:

int  id 
char(20) fname 
char(25) lname 

請注意,表中唯一的區別是「e_「字段名稱的前綴將從EmpNew Employee表中刪除。

如何將數據從EmpOld數據庫移動到EmpNew數據庫?

是否有代碼分別映射這些字段。

感謝社區,

尼克

回答

0

是否有分別,這些字段映射代碼。

否 - 您需要提供映射。如果您使用的是像SSIS這樣的ETL工具,那麼可能是是一種基於某些標準以編程方式映射列的方式,但沒有內置於SQL。

3

好吧,你可以隻手動他們的名字:

INSERT dbo.EmpNew(fname, lname) SELECT e_fname, e_lname FROM dbo.EmpOld; 

如果你想這樣做,而無需手動輸入列的列名,有魔法在SSMS - 從每個表只需拖動Columns夾入在查詢窗口中找到合適的位置(然後手動刪除標識列,時間戳,計算列等,如果相關的話)。

enter image description here

enter image description here

+0

我想上面的語句會工作。對不起,詢問跟隨(所有我的dba的左邊,所以我不是一個大的SQL人),但有沒有辦法創建字段列表並將其插入到上面的插入語句。我的桌子實際上有100個字段名稱。例如,我可以做INSERT dbo.EmpNew(預先生成的字段列表名稱)從dbo.EmpOld中選擇newfieldlistnames。 – Nick

+0

在對象資源管理器中,將'Columns'文件夾拖到您的查詢窗口中。讓懶惰再次變涼。 [見這裏的形象化](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits-to-kick-using-select-omitting-the-column-list.aspx)。 –

+0

很棒。我很感激幫助。再次感謝。 – Nick

0

也許你可以從表中sys.columns和其他系統表生成的幫助代碼,這樣就可以自動進行復制進程中運行。

我認爲你不能使用:

insert into (...) (...) 

,因爲你有兩個數據庫。因此,只需生成如下插入語句:

insert into table (...) VALUES (...) 

請糾正我,如果我誤解了這個問題。

+0

聽起來是正確的。 sys.columns看起來很有趣。我會研究它。謝謝 – Nick

1

沒有自動的方式來映射字段,除非有一些代碼。

這可以通過兩種方式來完成:

  1. 使用SQL導入&導出嚮導

    這是最簡單的方法來做到這一點,here is an article這一步給一步做到這一點。關鍵是在導入數據時更改源和目​​標字段之間的映射。

  2. 編寫的SQL

    這種方法需要兩個數據庫可訪問。使用簡單的INSERT語句如下這樣就可以實現

    insert into EmpNew.dbo.Employee(id, fname, lname) 
    select 
        e_id, e_fname, e_lname 
    from 
        EmpOld.dbo.Employee 
    

    如果它們是相同的SQL服務器上,然後將上面的工作好是。如果他們是不同的SQL服務器,你可能不得不添加一個鏈接服務器連接,並以此爲前綴。

+0

謝謝。我會研究你的真棒解決方案。順便說一句,關於如何以編程方式在字段名稱中刪除前綴「e_」的任何想法?我的數據庫表都是相同的。我需要刪除數據庫「EmpNew」員工表上所有字段的前綴「e_」。任何瘋狂的代碼?再次感謝你的幫助 – Nick

0

有兩種方法可以避免數據丟失。 1)你可以使用Insert語句

` 
    Insert into EmpNew (ID,fname,lname) 
     Select e_id, e_fname, e_lastname 
      from EmpOld 
    ` 

2)你可以簡單的使用導入,導出嚮導 轉到開始菜單>的SQL Server 2008/2008R2/2012> ImportandExport> 這將帶您在嚮導對話框

  • 選擇來源: - 數據源(服務器)和數據庫,在那裏你 從
    • 選擇目的地提取數據:數據源(服務器)和數據庫,你要解數據
    • 地圖表
    • 知道PK/FK /身份的

你是好去

相關問題