共用方式為


使用 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 字元格式:

Command 選項 描述
bcp -w 使用 Unicode 字元格式。
BULK INSERT DATAFILETYPE ='widechar' 大量匯入資料時,使用 Unicode 字元格式。

如需詳細資訊,請參閱 bcp 公用程式BULK INSERT (Transact-SQL) OPENROWSET (Transact-SQL)

注意

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

範例

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

範例資料表

這些範例會要求在架構下的 AdventureWorks2012 範例資料庫中建立名為 myTestUniCharData 資料表的 dbo 資料表。 您必須先建立這個資料表,才能執行範例。 若要建立此資料表,請在 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, 指定逗號 (,) 作為欄位結束字元。

注意:預設欄位結束字元是索引標籤 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 支援