這個很困擾吧!

因為MSSQL沒提供這種功能,

今天閒滋滋,突然有人問起,

所以小芸就花了一點時間測試,

沒想到有測出來耶,小小成就感,哈!

運用的原理很簡單,

先查詢資料,

Ex: select * from TABLENAME where 條件

其中 "*" 要擺入我們要組的 insert 語法,

Ex: insert TABLENAME values('a','b','c')

接下來要將這二個以字串的方式, 結合在一齊囉!!

就變成
select 'insert into TABLENAME values(''' + FIELD + ''',''' + FIELD + ''',''' + FIELD + ''')' as NEWFIELD from TABLENAME

這樣子是輸出成一列一列的查詢結果,

但不好複製,所以我們再動一次手腳,

可以把查詢結果,再存到文字檔中,

接著要利用的是BCP(Bulk Copy Program),

需要在cmd模式下執行唷!

Ex: bcp "SELECT * FROM DBNAME.dbo.TABLENAME" queryout Contacts.txt -c -T

他會將查詢結果存到 Contacts.txt 這個文字檔中,

因為沒有指定路徑,所以會儲存在開啟cmd的所在目錄,

通常是 C:\Documents and Settings\登入帳號\Contacts.txt。

將上面那二串結合的字串,再加入bcp後變成:


bcp "select 'insert into TABLENAME values(''' + FIELD + ''',''' + FIELD + ''',''' + FIELD + ''')' as NEWFIELD from DBNAME.dbo.DBTABLE" queryout Contacts.txt -c -T


妳就會發現有一隻輸出好的 insert into 語法,

存在 Contacts.txt 檔案中囉!

說明:
 DBNAME:資料庫名稱
 TABLENAME:資料表名稱
 FIELD:欄位名稱
 NEWFIELD:欄位名稱(隨意命名)
 -c:字元類型
 -T:代表信任連接
arrow
arrow
    全站熱搜

    張小芸 發表在 痞客邦 留言(2) 人氣()