SQL Server 資料匯入匯出

有時資料因部門不同等需求,要在不同的程式上運行
這時就需要將SQL Server中的資料轉成其他格式匯出
微軟提供了可以轉給oracle、excel等等
當然最後還有轉成文字檔輸出,如此一來全世界的系統都看得懂

使用上非常簡單,點選他就會有「匯入匯出精靈」跳出
三個重點:從那裡? 匯什麼? 到那裡?
跟著精靈的指示操作,超級簡單,我就不贅敘了

不過,用精靈操作有點不太專業
講白話點就是會按右鍵的就會匯出入操作
像我這種的專業人士就要懂如何運用指令啦

這個指令是在Dos介面下才能運作,用SQL Server沒辦法執行:






C:\Users\study>bcp
--使用方式: bcp {dbtable | query} {in | out | queryout | format} datafile

  [-m 最大錯誤數]       [-f 格式檔案]           [-e 錯誤檔案]
  [-F 第一列]           [-L 最後一列]           [-b 批次大小]
  [-n 原生類型]         [-c 字元類型]           [-w 寬字元類型]
  [-N 非文字保持不變]   [-V 檔案格式版本]       [-q 引號識別碼]
  [-C 字碼頁規範]       [-t 欄位結束字元]       [-r 資料列結束字元]
  [-i 輸入檔]           [-o 輸出檔]             [-a 封包大小]
  [-S 伺服器名稱]       [-U 使用者名稱] [-P 密碼]
  [-T 信任連接]         [-v 版本]               [-R 區域啟用]
  [-k 保留 Null 值]     [-E 保留識別值]
  [-h "load hints"]     [-x 產生 xml 格式檔案]
  [-d 資料庫名稱]        [-K 應用程式的意圖]

C:\Users\study>bcp 中文北風.dbo.客戶 out c:\backup\客戶.txt -T -w -t,
--這裡的意思:將中文北風.dbo.客戶 輸出到 c:\backup\客戶.txt\
--大寫T是信任連接,就是windows認證
--小寫w是寬字元類型,除了英文及數字,其他文都是寬字元
--小寫t是分割符號,這裡是用,號表示預設是Teb鍵
--還有-b,批次大小,預設是1000筆,不過現在電腦滿強悍的,可以用-b5000,表示每次5000筆



bcp還有2個有趣的指令,若想將某個查詢結果匯出來:
bcp "SELECT 產品編號,品名,價錢 FROM 練練.dbo.巨巨 WHERE 價錢>50" queryout C:\backup\大於50的產品.txt -T -w -t,

bcp第2個指令是如果匯出及匯入的程式都是SQL Server
那可以下-n指令,意思是原生狀態,不過有個前題
要匯入的資料表是並不存在的,所以必需先在該資料庫中建一與來源資料相同的Table:
--先建一個空表
select * 
into 新新.dbo.客戶
from 中文北風.dbo.客戶
where 1<0 

--匯出資料,不用在意副檔名
bcp 中文北風.dbo.客戶 out c:\backup\客戶.zzz -T -n

--匯入資料,不用在意副檔名,前題要先有個空表
bcp 新新.dbo.客戶 in c:\backup\客戶.zzz -T -n

這是只有在DOS下才可以執行指令,那在SQL Server中對應指令是
BULK INSERT,這只有在匯入才有用,沒有匯出
可以把它想像成SQL Server版的bcp指令

BULK INSERT 新新.dbo.客戶 FROM 'c:\BackBack\北風客戶.txt'
WITH
(
  DATAFILETYPE='widechar', --寬字元
  FIELDTERMINATOR=','      --以逗號區隔
)



BULK INSERT 新新.dbo.歷史資料 FROM 'C:\BackBack\歷史交易資料(原).abc'
WITH
(
    DATAFILETYPE='native', --原生狀態
    BATCHSIZE=5000         --每5000一批次  
)

留言

熱門文章