指定欄位和資料列結束字元
針對字元資料欄位,選擇性結束字元可讓您使用*「欄位結束字元」標示資料檔中每個欄位的結尾,並使用「資料列結束字元」*標示每個資料列的結尾。結束字元是指示程式從欄位或資料列結束與開始的交接處讀取資料檔的一種方法。
重要事項: |
---|
在使用原生或 Unicode 原生格式時,請使用長度前置詞,而不使用欄位結束字元。原生格式資料會與結束字元相衝突,因為原生格式資料檔是存放在 Microsoft SQL Server 的內部二進位資料格式中。 |
作為結束字元支援的字元
bcp 命令、BULK INSERT 陳述式和 OPENROWSET 大量資料列集提供者支援使用各種字元作為欄位或資料列結束字元,而且永遠會尋找每個結束字元的第一個例項。下表列出支援作為結束字元的字元。
結束字元 | 表示方式 |
---|---|
Tab |
\t 這是預設欄位結束字元。 |
新行字元 (Newline Character) |
\n 這是預設資料列結束字元。 |
歸位字元/換行字元 |
\r |
反斜線1 |
\\ |
Null 結束字元 (看不見的結束字元)2 |
\0 |
任何可列印的字元 (除了 Null 值、定位點、新行字元和 Return 鍵外,控制字元均無法列印) |
(*、A、t、l 等等) |
最多包含 10 個可列印字元的字串,包括先前所列的一些或所有結束字元 |
(**\t**、end、!!!!!!!!!!、\t—\n 等) |
1:只有 t、n、r、0 和 '\0' 字元可以與反斜線逸出字元搭配使用,以產生控制字元。
2:即使在列印時看不到 null 控制字元 (\0),這個字元仍是資料檔中的個別字元。這表示使用 null 控制字元做為欄位或資料列結束字元,和完全沒有欄位或資料列結束字元不同。
重要事項: |
---|
如果在資料內發現結束字元,它會當作結束字元而非當作資料來解譯,而該字元之後的資料則會解譯為屬於下一個欄位或記錄。因此,請小心選擇結束字元,確定這些結束字元絕不會出現在您的資料中。 |
使用資料列結束字元
資料列結束字元可以和最後一個欄位的結束字元相同。不過,個別的資料列結束字元通常十分有用。例如,若要產生表格式輸出,請以新行字元 (\n) 結束每個資料列的最後一個欄位,並以定位字元 (Tab) 結束所有其他欄位。若要將每個資料記錄放在資料檔自己的那一行,請指定 \r\n 組合做為資料列結束字元。
附註: |
---|
以互動方式使用 bcp 並指定 \n (新行) 做為資料列結束字元時,bcp 會自動以 \r (歸位字元) 字元當作前置詞,進而產生資料列結束字元 \r\n。 |
指定大量匯出的結束字元
大量匯出 char 或 nchar 資料時,若想要使用非預設的結束字元,您必須對 bcp 命令指定結束字元。可以使用下列方式指定結束字元:
- 使用格式檔案,按個別欄位逐一指定結束字元。
附註: 如需有關如何使用格式檔案的詳細資訊,請參閱<用於匯入或匯出資料的格式檔案>。 - 不使用格式檔案,可使用下列替代方法:
- 使用 -t 參數,對資料列中最後一個欄位以外的所有欄位指定資料列結束字元,並使用 -r 參數指定資料列結束字元。
- 使用字元格式參數 (-c 或 -w) 但不使用 -t 參數,將欄位結束字元設定為定位字元 \t。這樣做如同指定 -t\t。
附註: 如果指定 -n (原生資料) 或 -N (Unicode 原生) 參數,則不會插入結束字元。 - 如果互動式 bcp 命令包含 in 或 out 選項,但不使用格式檔案參數 (-f) 或資料格式參數 (-n、-c、-w 或 -N),而且您選擇不指定前置詞長度和欄位長度,則該命令會提示輸入每個欄位的欄位結束字元 (預設是沒有)。
Enter field terminator [none]:
預設值通常是適合的選擇。不過,有關 char 或 nchar 資料欄位,請參閱以下<使用結束字元的指導方針>細項。如需在內容中顯示此提示的範例,請參閱<使用 bcp 指定相容性的資料格式>。附註: 您以互動方式在 bcp 命令中指定所有的欄位後,命令會提示您將每個欄位的回應儲存在非 XML 格式的檔案中。如需有關非 XML 格式檔案的詳細資訊,請參閱<瞭解非 XML 格式檔案>。
使用結束字元的指導方針
在某些情況中,結束字元對 char 或 nchar 資料欄位而言很有用。例如:
範例
這個範例會使用字元格式將資料從 AdventureWorks``HumanResources.Department
資料表大量匯出到 Department-c-t.txt
資料檔,並以逗點做為欄位結束字元,以新行字元 (\n) 做為資料列結束字元。如需這個資料表的詳細資訊,請參閱<Department 資料表 (AdventureWorks)>。
bcp 命令包含下列參數。
參數 | 描述 |
---|---|
-c |
指定以字元資料載入資料欄位。 |
-t |
指定定位字元 ( |
-r \n |
指定資料列結束字元為新行字元。這是預設資料列結束字元,因此可選擇性指定。 |
-T |
指定 bcp 公用程式使用整合式安全性的信任連接,連接到 SQL Server。如果未指定 -T,您必須指定 -U 與 -P 才能成功登入。 |
如需詳細資訊,請參閱<bcp 公用程式>。
在 Microsoft Windows 命令提示字元輸入:
bcp AdventureWorks.HumanResources.Department out C:\myDepartment-c-t.txt -c -t\t -r \n -T
這會建立 Department-c-t.txt
,四個欄位中各包含 16 筆記錄。這些欄位會以定位字元隔開。
指定大量匯入的結束字元
當您大量匯入 char 或 nchar 資料時,大量匯入命令必須辨識在資料檔中使用的結束字元。指定結束字元的方式視大量匯入命令而定,如下所示:
bcp
指定匯入作業結束字元所使用的語法,與用於匯出作業的語法相同。如需詳細資訊,請參閱本主題前面的「指定大量匯出的結束字元」。BULK INSERT
您可以使用下表所示的限定詞,對格式檔案中的個別欄位,或對整個資料檔指定結束字元。限定詞 描述 FIELDTERMINATOR ='field_terminator'
指定要用於字元和 Unicode 字元資料檔中的欄位結束字元。
預設值是 \t (定位字元)。
ROWTERMINATOR ='row_terminator'
指定要用於字元和 Unicode 字元資料檔中的資料列結束字元。
預設值是 \n (新行字元)。
如需詳細資訊,請參閱<BULK INSERT (Transact-SQL)>。
INSERT ...SELECT * FROM OPENROWSET(BULK...)
針對 OPENROWSET 大量資料列集提供者,只可以在格式檔案中指定結束字元 (除了大型物件資料類型以外都需要格式檔案)。如果字元資料檔使用非預設結束字元,則必須在格式檔案中加以定義。如需詳細資訊,請參閱<建立格式檔案>與<使用格式檔案大量匯入資料>。
如需有關 OPENROWSET BULK 子句的詳細資訊,請參閱<OPENROWSET (Transact-SQL)>。
範例
這一節中的範例會將字元資料從先前範例中建立的 Department-c-t.txt
資料檔,大量匯入到 AdventureWorks
範例資料庫中的 myDepartment
資料表。您必須先建立這個資料表,才能執行範例。若要在 dbo 結構描述下建立這個資料表,請在 SQL Server Management Studio 查詢編輯器中執行下列程式碼:
USE AdventureWorks;
GO
DROP TABLE myDepartment;
CREATE TABLE myDepartment
(DepartmentID smallint,
Name nvarchar(50),
GroupName nvarchar(50) NULL,
ModifiedDate datetime not NULL CONSTRAINT DF_AddressType_ModifiedDate DEFAULT (GETDATE())
);
GO
A. 使用 bcp 以互動方式指定結束字元
下列範例會使用 bcp
命令,大量匯入 Department-c-t.txt
資料檔。此命令與大量匯出命令使用相同的命令參數。如需詳細資訊,請參閱本主題前面的「指定大量匯出的結束字元」。
在 Windows 命令提示字元輸入:
bcp AdventureWorks..myDepartment in C:\myDepartment-c-t.txt -c -t \t -r \n -T
B. 使用 BULK INSERT 以互動方式指定結束字元
下列範例會使用 BULK INSERT
陳述式 (其中使用下表所示的限定詞),大量匯入 Department-c-t.txt
資料檔。
選項 | 屬性 |
---|---|
DATAFILETYPE ='char' |
指定以字元資料載入資料欄位。 |
FIELDTERMINATOR =' |
指定逗號 ( |
ROWTERMINATOR =' |
指定資料列結束字元為新行字元。 |
在 SQL Server Management Studio 查詢編輯器中,執行下列程式碼:
USE AdventureWorks;
GO
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
);
GO
請參閱
概念
使用 bcp 指定欄位長度
在資料檔中指定前置詞長度
使用 bcp 指定檔案儲存類型
字元格式資料的儲存
其他資源
bcp 公用程式
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
RowDelimiter Property