搜尋本站文章

2011-07-14

SSIS:設定文字檔的「不齊右(ragged)」:對文字檔案的各個資料行,指定適合的「固定寬度」(1)

適用環境:
SQL Server 2005、2008、2008 R2。

「不齊右(ragged)」檔案就是除了最後一個資料行之外,其他所有「資料行」都有固定寬度的檔案。
它是以資料列分隔符號分隔。
所以,需要在「資料行」頁面上,指定各個資料行的固定寬度。

--00



需求的範例如下:

1. 第 1 到 4 字元,以 4 個字元是為一組,輸入到指定的資料行內。
2. 第 5 到 7 字元,以 3 個字元是為一組,輸入到指定的資料行內。

3. 第 8 到 12 字元,以 5 個字元是為一組,輸入到指定的資料行內。

範例檔案的格式如下:

--01

--02



準備工作:
步驟01. 執行以下的範例程式碼,建立範例資料表與新增資料列:

-- 建立範例資料表:tragged01
USE Northwind
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tragged01]') AND type in (N'U'))
DROP TABLE [dbo].[tragged01]
GO
CREATE TABLE [dbo].[tragged01](
rid INT IDENTITY PRIMARY KEY,
[c1] [char](4) NULL,
[c2] [char](3) NULL,
[c3] [char](5) NULL
) ON [PRIMARY]
GO
INSERT dbo.tragged01 VALUES('A123','456','78901')
INSERT dbo.tragged01 VALUES('B123','456','78901')
INSERT dbo.tragged01 VALUES('C123','456','78901')
GO

--
SELECT * FROM dbo.tragged01
GO

--03


練習一:使用「SQL Server 匯入和匯出精靈 」,匯入來源文字檔,使用「不齊右(ragged)」

完成目標:
設定來源文字檔案的「分欄符號」,也就是分隔線。
匯入到 SQL Server 資料庫內。

工作1:「SQL Server 匯入和匯出精靈 」

步驟01. 執行「SQL Server 匯入和匯出精靈 」。

步驟02. 在「選擇資料來源」視窗,輸入以下的參數:
在左邊窗格,點選「一般」頁籤。
在「資料來源」方塊,下拉選取:「一般檔案來源」。
在「檔案名稱」區域,點選「瀏覽」,選擇當做來源的文字檔案。

在「格式」方塊,下拉選取:「不齊右」。
在「標頭資料列分隔符號」方塊,下拉選取:「{CR}{LF}」。

--04


在左邊窗格,點選「資料行」頁籤。
在右邊的「來源資料行」區域,在下方的資料值區域。

在要做分隔的字元值處,按下滑鼠,應該會出現做為分隔字元值用的「分欄符號」,也就是分隔線。

--05


在左邊窗格,點選「進階」頁籤。
在右邊窗格的「設定每一個資料行的屬性」區域,分別檢視個別資料行的屬性設定。

--06 點選「資料行 0」


--07 點選「資料行 1」


--08 點選「資料行 2」


在「OutputColumnWidth」方塊,設定為:5。


在左邊窗格,點選「預覽」頁籤。

--09


點選「下一步」。

步驟03. 在「選擇目的地」視窗,連線到指定的目標伺服器,選擇指定目標資料庫,點選「下一步」。

步驟04. 在「選取來源資料表和檢視」視窗,設定以下的參數:

--10

在「目的地」區域,確認選取要做為匯入用的目標資料表。
點選「預覽」,檢視所取樣的來源資料,點選「關閉」。

--11


步驟05. 點選「編輯對應」,在「資料行對應」視窗,對個別資料行設定適當的參數:

在「對應」區域,在「目的地」方塊下方的<忽略>值,點選合適的資料行之名稱,並設定適當的資料類型、長度等屬性,點選「確定」。

--12

--13


點選「下一步」。

步驟06. 在「儲存並執行封裝」視窗,點選「立即執行」,點選「下一步」。

步驟07. 在「完成精靈」視窗,點選「完成」。

步驟08. 在「已成功執行」視窗,點選「關閉」。
--14


步驟09. 查詢與驗證匯入的資料表內容。
--15


練習二:使用「SQL Server 匯入和匯出精靈 」,匯出文字檔,使用「不齊右(ragged)」

完成目標:
由 SQL Server 匯出資料成文字檔案,各個資料行全緊密連接在一起。

工作1:「SQL Server 匯入和匯出精靈 」

步驟01. 執行「SQL Server 匯入和匯出精靈 」。

步驟02. 在「選擇資料來源」視窗,輸入以下的參數:
伺服器名稱:連線到目標伺服器。
資料庫:選擇目標資料庫。

點選「下一步」。

步驟03. 在「選擇目的地」視窗,輸入以下的參數:
在「目的地」方塊,下拉選取:「一般檔案目的地」。
在「檔案名稱」區域,點選「瀏覽」,設定匯出一般檔案的相關屬性。

在「格式」方塊,下拉選取:「不齊右」。

--16

點選「下一步」。

步驟04. 在「指定資料表複製或查詢」視窗,點選「從一個或多個資料表或檢視表複製資料」,點選「下一步」。

步驟05. 在「設定一般檔案目的地」視窗,輸入以下的參數:
在「來源資料表或檢視表」方塊,下拉選取:「dbo.tragged01」。
在「指定分隔目的地檔案的字元」區域,在「資料列分隔符號」方塊,下拉選取:「{CR}{LF}」。

--17

點選「預覽」,在「預覽資料」視窗,點選「確定」。

--18

點選「編輯對應」,在「資料行對應」視窗,輸入以下的參數:
在「目的地」區域,選擇「rid」,下拉選取:<忽略>。

點選「確定」。

--19


點選「下一步」。

步驟05. 在「儲存並執行封裝」視窗,點選「下一步」。

步驟06. 在「完成精靈」視窗,點選「完成」。

--20

步驟07. 在「已成功執行」視窗,點選「關閉」。

--21

步驟08. 檢視匯出的一般文字檔案。

--22

--23



參考資料:

選擇目的地 (SQL Server 匯入和匯出精靈)
http://msdn.microsoft.com/zh-tw/library/ms178430.aspx

選擇資料來源 (SQL Server 匯入和匯出精靈)
http://msdn.microsoft.com/zh-tw/library/ms189667.aspx