iT邦幫忙

0

MSSQL CSV大量UPDATE

小弟愚笨
不小心將測試資料的所有姓名(CName)都改掉了
還好有備份CSV檔案

不過CSV檔只有兩個欄位
CName,dataid

剛好可以使用dataid當作where條件

請問如何用此csv檔大量update?

本來想直接用匯入insert的方式
不過其他欄位資料有,符號
會誤判不同欄位資料 因而資料跑掉

故求問是否有CSV大量UPDATE的方式
使用SQL為 MSSQL2014

slime iT邦大師 1 級 ‧ 2019-10-05 16:31:06 檢舉
1. 將csv插入暫存表
2. 比對暫存表與目前表, 產生應更新清單.
3. 備份目前表.
4. 依照應更新清單執行更新.
5. 比對目前表與備份, 確認與應更新清單相符.
0
juju
iT邦新手 5 級 ‧ 2019-10-05 16:48:18

第一個想法是 BULK INSERT

也看過同事用excel讀檔後,函式
="SELECT '"&A1&"' AS CName, '"&B1&"' AS dataid UNION ALL"
再貼回SSMS INSERT到TEMP TABLE去UPDATE資料

0
fuzzylee1688
iT邦新手 2 級 ‧ 2019-10-05 16:55:43

建議用 BCP api匯入後, 以SELECT INTO 到WORKING TABLE, 再RENAME, 有備份又快速.

3
player
iT邦大師 1 級 ‧ 2019-10-05 17:52:20

你電腦裡有裝Excel嗎?
如果有的話
用Excel開啟csv檔後
手動建立一份SQL的update的命令字串
像是C1
="UPDATE [資料表名稱] SET CName = '" & A1 &"' where dataid = '" & B1 & "';"

然後用複製貼上的方式去產生C2以後的所有的update命令
然後再貼到SQL Server去跑一次就好了

2
一級屠豬士
iT邦高手 1 級 ‧ 2019-10-05 18:18:45

不管怎樣,先把這個檔案,再多備份幾個,取不同名字,並且要放到其他地方.

我要發表回答

立即登入回答