Share via


使用 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