使用 Unicode 字元格式匯入或匯出資料
使用含有擴充/DBCS 字元的資料檔在多個 Microsoft SQL Server 執行個體之間進行大量傳送資料時,建議使用 Unicode 字元格式。Unicode 字元資料格式可允許從伺服器匯出資料時所使用的字碼頁,與執行作業之用戶端所使用的字碼頁不同。在此情況下,使用 Unicode 字元格式具有下列優點:
如果來源資料和目的地資料都是 Unicode 資料類型,使用 Unicode 字元格式可保留所有的字元資料。
如果來源資料和目的地資料不是 Unicode 資料類型,使用 Unicode 字元格式可使來源資料中,擴充字元的遺失可能性降到最低 (該擴充字元無法在目的地中表示)。
Unicode 字元格式資料檔遵循 Unicode 檔案的慣例。檔案的前兩個位元組是十六進位數字 0xFFFE。這些位元組可作為位元組順序的遮罩,指定先儲存或後儲存高順序的位元組至檔案中。
重要事項 |
---|
如果格式檔案要與 Unicode 字元資料檔案搭配使用,則所有的輸入欄位都必須是 Unicode 文字字串 (也就是固定大小或以字元結束的 Unicode 字串)。 |
儲存在 Unicode 字元格式資料檔的 sql_variant 資料,其操作方式和在字元格式資料檔中相同,不同之處在於資料是儲存為 nchar,而非 char 資料。如需字元格式的詳細資訊,請參閱<使用字元格式匯入或匯出資料>。
若要使用 Unicode 字元格式預設值以外的欄位或資料列結束字元,請參閱<指定欄位和資料列結束字元>。
Unicode 字元格式的命令選項
您可以使用 bcp、BULK INSERT 或 INSERT 這類選項,將 Unicode 字元格式資料匯入資料表。SELECT * FROM OPENROWSET(BULK...)。針對 bcp 命令或 BULK INSERT 陳述式,您可以在命令列上指定資料格式。針對 INSERT ...SELECT * FROM OPENROWSET(BULK...) 陳述式,您必須在格式檔案中指定資料格式。
以下命令列選項支援 Unicode 字元格式:
命令 |
選項 |
描述 |
---|---|---|
bcp |
-w |
使用 Unicode 字元格式。 |
BULK INSERT |
DATAFILETYPE ='widechar' |
大量匯入資料時,使用 Unicode 字元格式。 |
如需詳細資訊,請參閱<bcp 公用程式>、<BULK INSERT (Transact-SQL)>或<OPENROWSET (Transact-SQL)>。
[!附註]
或者,您可以在格式檔案中按照每個欄位指定格式。如需詳細資訊,請參閱<用於匯入或匯出資料的格式檔案>。
範例
下列範例將說明如何使用 bcp 大量匯出 Unicode 字元資料,以及如何使用 BULK INSERT 大量匯入相同的資料。
範例資料表
下列範例會要求在 dbo 結構描述底下的 AdventureWorks2008R2 範例資料庫中建立一個名為 myTestUniCharData 的資料表。您必須先建立這個資料表,才能執行範例。若要建立這個資料表,請在 SQL Server Management Studio 查詢編輯器中,執行:
USE AdventureWorks2008R2;
GO
CREATE TABLE myTestUniCharData (
Col1 smallint,
Col2 nvarchar(50),
Col3 nvarchar(50)
);
若要擴展這個資料表及檢視產生的內容,請執行下列陳述式:
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData
使用 bcp 大量匯出 Unicode 字元資料
若要從資料表匯出資料至資料檔,請使用 bcp 配合 out 選項與下列限定詞:
限定詞 |
描述 |
---|---|
-w |
指定 Unicode 字元格式。 |
-t, |
指定逗號 (,) 作為欄位結束字元。
附註
預設的欄位結束字元是 Tab 鍵 Unicode 字元 (\t)。如需詳細資訊,請參閱<指定欄位和資料列結束字元>。
|
-T |
指定 bcp 公用程式使用整合式安全性的信任連接,連接到 SQL Server。如果未指定 -T,您必須指定 -U 與 -P 才能成功登入。 |
下列範例會將 Unicode 字元格式的資料,從 myTestUniCharData 資料表大量匯出到名為 myTestUniCharData-w.Dat 的新資料檔,並使用逗號 (,) 做為欄位結束字元。在 Microsoft Windows 命令提示字元中,輸入:
bcp AdventureWorks2008R2..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T
使用 BULK INSERT 大量匯入 Unicode 字元資料
下列範例會使用 BULK INSERT,將 myTestUniCharData-w.Dat 資料檔中的資料匯入至 myTestUniCharData 資料表。您必須在陳述式中宣告非預設的欄位結束字元 (,)。在 SQL Server Management Studio 查詢編輯器中,執行:
USE AdventureWorks2008R2;
GO
BULK INSERT myTestUniCharData
FROM 'C:\myTestUniCharData-w.Dat'
WITH (
DATAFILETYPE='widechar',
FIELDTERMINATOR=','
);
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO