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