[轉貼]將資料庫表格中的資料以 INSERT INTO 指令的方式匯出

原文網址:http://twg.idv.tw/dv_rss_xhtml_155_85551_2.html

通常我們從 SQL Server 匯出資料到另一台主機大致上有幾種方式:

  1. 使用 bcp.exe 匯出成純文字格式,在到另一台主機用 bcp.exe 匯入資料
  2. 使用 DTS (Data Transformation Services) 或 SSIS (SQL Server Integration Services) 將資料封裝成檔案,並帶到另一台 Server 匯入資料。
  3. 備份整個資料庫,將備份檔(*.bak)帶到另一台主機還原資料
  4. 卸載(Detach)資料庫,將資料庫檔(*.mdf 與 *.ldf)帶到另一台主機附加(Attach)資料庫

我以前常用 MySQL 資料庫,匯出資料庫的時候都是 DDL ( CREATE TABLE, … ), DML (INSERT INTO, … ) 的格式儲存,要移轉資料到其他主機都很方便。但改用 SQL Server 時這些東西都不見了,讓我困擾了好久,有時後為了轉移一些資料都要花費很大的力氣將資料轉移到遠端的主機,因為有些遠端的 SQL Server 是無法直接用 Management Studio 遠端連接,只能用 Web 介面管理時,就很很麻煩。

但我今天在這裡發現一個神奇的預儲程序(Stored Procedure),作者是一位叫做 Narayana Vyas Kondreddi 的仁兄,光看名字實在看不出是哪一國人 :-p

他寫的 T-SQL 可以將表格中的資料全部都轉成 INSERT INTO 的形式,方便你將資料帶到另一台主機,只要執行 INSERT INTO 指令就可以將資料新增到另一台主機了。

這個預儲程序的優點有:

  • Data from both tables and views can be scripted
  • No CURSORs are used
  • Table names and column names with spaces are handled
  • All datatypes are handled except images, large text and binary columns with more than 4 bytes
  • NULLs are gracefully handled
  • Timestamp columns are handled
  • Identity columns are handled
  • Very flexible and configurable
  • Non-dbo owned tables are handled
  • Computed columns are handled
  • You can filter the rows for which you want to generate INSERTs

下載 Stored Procedure:

原作者的網站有 14 個使用說明範例(Usage Example),各位可以上去看看。執行完下載的 T-SQL Script 之後會在 master 資料庫中新增一個 dbo.sp_generate_inserts 預儲程序物件,如下圖示:

執行完下載的 T-SQL Script=

不過缺點是這個方法沒辦法適用於有文字欄位內容超過 8KB 的資料,因為輸出的結果是顯示在 SSMS ( SQL Server Management Studio ) 中,輸出的欄位長度是有限制的。

另外,這個預儲程序我有發現一個小問題,就是當執行完畢後,匯出的資料中如果內容中有「斷行符號」的話,全部都會被置換成「空白」字元,導致匯入的時候所有斷行字元都會被換成空白符號,資料就被破壞掉了。

我個人花了 2 個小時將這個 Script 研究過一遍並將問題給修正了(只改了兩行),用 T-SQL 產生 T-SQL 的程式碼真的會讓人眼花撩亂,一大堆單引號 Quote 來 Quote 去的,你自己看程式碼就知道了,我將更新過的 T-SQL Script 放在以下檔案中,我只有改寫 SQL 2005 的版本而已:

成就感

常在想,最近工作遇到的困境在哪?
缺乏動力!! 不適應環境!! 工作量多!! 壓力大!! 付出不夠!!
 
是成就感,讓我踏上程式之路的東西消失了,
現在所遇到的只有挫折、不甘心,
因為沒經驗,還是因為沒用心,在專案裡,我沒有存在感!!
一個沒有存在感的人,還談什麼成就感呢?
 
努力把SA的能力學起來吧!! 在加入專案初期一直抱持這個想法,
二個月過去了,我還是適應不良。
 
雖然我愛cowork的感覺,但更討厭team member間皮笑肉不笑,
加上持續的被採到線,只能壓抑住自己的情緒,我很不開心。
 
或許社會就是如此的現實,只是我還太天真而已。

放假(一)

終於終於熬到放假了….,但我卻開心不起來!!
完全沒有無事一身輕的的感覺,
也許是心中的結還沒有解開吧!!
(學長也許會說:「為什麼不學亞歷山大一刀二斷就好呢?」)

新專案KICK OFF在即,開會、寄MAIL的訊息一步步緊逼著我,
也許是新PM急需我加入,並能馬上進入狀況.

「6/19的KICK OFF會你要到喔!!」新PM寄來的MAIL內容,

「不行,那天專案要驗收很重要的東西,JASON一定要在,
最快也是22號以後才能過去」原PM,學長很有義氣的這麼回信,

沒想到隔天的信就寫著叫我22號準時要去USER那訪談,
完全不想讓我有休假的機會,OOXX……

「報告學長,如果專案驗收成功,我可否先放完假再去新專案」
「我不想要有到新專案就馬上請假的感覺」我這麼向PM請求,

本以為我會有一個星期的空閒時間,可用這段期間來補元旦和過年加班的假,
事情至此,只好找老闆談談囉!!
不得不說,學長人真好,已先幫我和老闆橋了星期一~三共3天的假,

但前題是,「你的CL要搞定呀!!」

說到這CL,因其他線在這星期大致都已驗收,
因我解決問題的速度還是不夠快,
學長找了二大強力助手: 莎拉、小白全力支援我.

連三天在站前的趕工,對數字、驗資料,總算有了小小的成果,

趕進度總有摩擦,再加上他的PM及我的PM一直在追她的進度,
心怡的壓力應該到了極點,

「不知為什麼,心怡都不說有哪幾張有驗過了,我改UNV時都很怕會動到已是正確的資料」
PM在問我已驗過的報表時,我回了這樣的疑問,

「心怡都沒人可以幫她嗎?」
「心怡的資料是怎麼驗的?」
「有和USER確認過了嗎?」
學長提出了這一大堆的問號?

「有啦!! 他們的SA都有幫她,只是一來一回,也是要花時間的」
「USER好像都很信任SA,只要她說OK,好就都沒問題」
「心怡都是自己先驗完資料,沒問題後才會請USER看的」
而我卻還是努力的幫她說話,

「那這樣進度快的起來嗎?」
「為什麼不學其他線的人,直接把報表丟給USER看」
學長又問,

「什麼叫我們的人幫不上忙」
「分明問題都卡在她那」
學長仍是很氣憤的說,

「學長…」
「只是,心怡說她問題丟太多給我,我會亂掉,所以改用一個一個問題依序來解決.」
「這樣的進度一定不快」
很明顯的是不信任我的能力,唉!!我嘆了口氣.

「這次有二個人全力來幫我了,妳一次可以丟多個問題給我啦!!」
我努力的向心怡說著我會全力解決問題的積極態度,

這之中當然也發生心怡不滿說我們有三人,而她只有一人,
要驗資料格式、查資料,還要問SA及USER確認問題,她會忙不過來等的難題,

「她事情全都一手包,我能体會她的忙」
「但我不知怎麼幫到她!!」
「只能盡全力快點找到她提的問題」

而莎拉,小白,MICHI,JC也為了組報表及驗資料陪我加班,由衷感謝!!
心怡提的某些需求,真的是難題啦!!
但也沒難倒我們的人,順利的找到解法,撐了過去,並向學長凹了一頓森田牧場,哈!!

「誰答應說要組出這麼難的報表呀!!」MICHI發出不平之聲,
「誰叫她是心怡呢?」我這麼回.
「……」MICHI,

昱日,星期五AC最後的驗收會議,在一團亂的情況下,結束了??
連主講的我也不知是怎麼結束的…..

在開會時,我得知CL也爆出報表值還是跑不對的問題,
緊急請小白下去解決.
除了發生了MICHI不爽的小插曲,一切還算OK,
在志傑的SQL支援及下午茶的加持,AC成功簽驗.
但在開AC會的那時,我的心其實早已飛到CL那…….

「吼!! 你還說你沒有偏心」耳邊響起這樣的聲音.

之後,我和小白、MICHI移師到另一間會議室繼續解決CL問題,

「為什麼CR的這張表今天都跑不出值來啦!!」
「為什麼數值還是不對….」

怎麼一直是這類的問題呀!! 不只心怡想問,我也想問……
就在小白及我在一旁支援(搗亂)下,問題一一釐清解決.

「快點喔!! 我今天7:30要離開」心怡這麼說,

偏偏在此時又遇到CR的PORT被封…..
好慘的最後一天,我心想.

未完~~

害怕 釋懷

人總會被眼前事物所迷惑,當下還會覺得自己做錯了嗎?

不適應新專案已經不是一二天的事了,
現在才知淑芬的嚴格可是出了名的呀!! 不只有我一個人在害怕,
新加入的SA也抖在等,直喊著假日他也要在家中加班.

公司最近也公布了KPI結果,JC很神秘的跑來問我分數,因為她只有2分,很怕工作不保,
相當的意思,因為我是5分,想想之前在SKL的加班及努力,應該還是很有用的.

直覺

女生的直覺真是準的恐怖….

在和雅帆談心怡的事時,突然冒出一句,
「我還以為你當想追的是秋燕,沒想到會是心怡」

嚇!!我當初還直的有這樣想過….
只是在問完秋燕有沒有男友及假日的休閒活動後,
就覺得她不適合我了,也不知為何在當時我會如此篤定….

而追心怡,是為什麼呢? 為什麼我會覺得她適合我,
明明那五年的差距就擺在眼前呀!!

「你還真是不簡單,一般男生都會在意這年齡的差距,特別是女大男小」雅帆這說,

都還沒追到呢!! 所以我還沒有想這麼多.
我想也許這就是孽緣吧!!

無言

等不到的回應,只剩下熱臉貼冷屁股…..
這應該是我目前的寫照吧!!

老實說,我從來沒有放棄,一直到今天還是如此,
不過他一貫的不回應,一次次打擊著我,
為什麼要這麼的自甘堕落呢? 我都這樣問著自己,
也安慰著自己說,或許…或許…她只是在忙…,

「張先生你快醒醒吧!!不要在做白日夢了,
人家對你沒意思,就是沒意思…..」

我還存著那麼一丁點的希望,不能自已