[SQL Server] 匯入資料至SQL Server時,若目的地資料表有FK欄位時的對策

[SQL Server] 匯入資料至SQL Server時,若目的地資料表有FK欄位時的對策

前言

假設資料庫有兩個關聯的資料表(Products產品主檔、ProductCategories產品類別)

image

現有份Excel檔案,要把它匯入至Products產品主檔表裡

image

方法其實很簡單,但昨天不知怎的,我居然花2個小時寫程式來實現 囧…

以下記錄使用SQL Server匯入匯出精靈的方法

 

 

 

實作

整個步驟大致是:

1.先把Excel檔案的資料匯入至DB裡臨時用的Table

2.使用SQL語法的Inner join,把該Table的產品類別欄位換算成產品類別ID

3.剛剛使用的SQL語法當作一個子查詢,再餵入insert into Products,即可完成匯入

 

 

先對著資料庫右鍵

image

下一步

image

選擇資料來源為Excel後再下一步

image

再選擇匯入目的地資料庫及登入驗證方式後按下一步

image

直接下一步

image

因為要匯入Excel的第一個Sheet1,所以選擇…

image

再下一步

image

按「完成」開始執行匯入動作

image

image

匯入完成之後,到DB找「工作表1$」,接著要下SQL語法換算產品類別ID

image

之後再下insert into Products語句來新增資料

image

※如果兩邊Table欄位型別不一致要轉型的話,也可以在這時候處理

image

整個資料都塞完之後,再把臨時Table 「工作表1$」給刪除即可

 

 

結語

匯入資料方法百百種,挑一個好記萬用的來背吧…

 

 

其他文章:將 Excel 文件資料匯入到 SQL Server 資料表的兩種方法