共用方式為


使用 Unicode 字元格式匯入或匯出資料 (SQL Server)

使用含有擴充/DBCS 字元的資料檔在多個 SQL Server 執行個體之間大量傳送資料時,建議使用 Unicode 字元格式。 Unicode 字元資料格式可允許從伺服器匯出資料時所使用的字碼頁,與執行作業之用戶端所使用的字碼頁不同。 在此情況下,使用 Unicode 字元格式具有下列優點:

  • 如果來源資料和目的地資料都是 Unicode 資料類型,使用 Unicode 字元格式可保留所有的字元資料。

  • 如果來源資料和目的地資料不是 Unicode 資料類型,使用 Unicode 字元格式可使來源資料中,擴充字元的遺失可能性降到最低 (該擴充字元無法在目的地中表示)。

Unicode 字元格式資料檔遵循 Unicode 檔案的慣例。 檔案的前兩個位元組是十六進位數字 0xFFFE。 這些位元組可作為位元組順序的遮罩,指定先儲存或後儲存高順序的位元組至檔案中。

重要事項重要事項

如果格式檔案要與 Unicode 字元資料檔案搭配使用,則所有的輸入欄位都必須是 Unicode 文字字串 (也就是固定大小或以字元結束的 Unicode 字串)。

儲存在 Unicode 字元格式資料檔的 sql_variant 資料,其操作方式和在字元格式資料檔中相同,不同之處在於資料是儲存為 nchar,而非 char 資料。 如需字元格式的詳細資訊,請參閱<定序與 Unicode 支援>。

若要使用 Unicode 字元格式預設值以外的欄位或資料列結束字元,請參閱<指定欄位與資料列結束字元 (SQL Server)>。

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)>。

[!附註]

或者,您可以在格式檔案中按照每個欄位指定格式。 如需詳細資訊,請參閱<匯入或匯出資料的格式檔案 (SQL Server)>。

範例

下列範例示範如何使用 bcp 大量匯出 Unicode 字元資料,以及如何使用 BULK INSERT 大量匯入相同的資料。

範例資料表

下列範例會要求在 dbo 結構描述底下的 AdventureWorks2012 範例資料庫中建立一個名為 myTestUniCharData 的資料表。 您必須先建立這個資料表,才能執行範例。 若要建立這個資料表,請在 SQL Server Management Studio 查詢編輯器中,執行:

USE AdventureWorks2012;
GO
CREATE TABLE myTestUniCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

若要擴展這個資料表及檢視產生的內容,請執行下列陳述式:

INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3') 
        ,(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;

使用 bcp 大量匯出 Unicode 字元資料

若要從資料表匯出資料至資料檔,請使用 bcp 配合 out 選項與下列限定詞:

限定詞

說明

-w

指定 Unicode 字元格式。

-t ,

指定逗號 (,) 做為欄位結束字元。

[!附註]

預設的欄位結束字元是 Tab 鍵 Unicode 字元 (\t)。 如需詳細資訊,請參閱<指定欄位與資料列結束字元 (SQL Server)>。

-T

指定 bcp 公用程式使用整合式安全性的信任連接,連接至 SQL Server。 如果未指定 -T,則必須指定 -U-P,才能順利登入。

下列範例會將 Unicode 字元格式的資料,從 myTestUniCharData 資料表大量匯出到名為 myTestUniCharData-w.Dat 的新資料檔,並使用逗號 (,) 做為欄位結束字元。 在 Microsoft Windows 命令提示字元中,輸入:

bcp AdventureWorks2012..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

使用 BULK INSERT 大量匯入 Unicode 字元資料

下列範例會使用 BULK INSERT,將 myTestUniCharData-w.Dat 資料檔中的資料匯入至 myTestUniCharData 資料表。 您必須在陳述式中宣告非預設的欄位結束字元 (,)。 在 SQL Server Management Studio 查詢編輯器中,執行:

USE AdventureWorks2012;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO

相關工作

若要使用大量匯入或大量匯出的資料格式

請參閱

參考

bcp 公用程式

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

資料類型 (Transact-SQL)

概念

定序與 Unicode 支援