Share via


使用 Unicode 原生格式匯入或匯出資料

當必須從某個 MicrosoftSQL Server 安裝將資訊複製到其他安裝時,Unicode 原生格式很有用。對非字元的資料使用原生格式可節省時間,消除在資料類型與字元格式之間,不必要的來回轉換。對所有字元資料使用 Unicode 字元格式,可以防止在使用不同字碼頁的伺服器之間大量傳送資料期間,失去任何擴充字元。任何大量匯入方法都可以讀取以 Unicode 原生格式表示的資料檔。

建議使用 Unicode 原生格式,在多個 SQL Server 執行個體之間,使用包含擴充字元或 DBCS 字元的資料檔,大量傳送資料。若是非字元資料,Unicode 原生格式會使用原生 (資料庫) 資料類型。若是字元資料,如 char、nchar、varchar、nvarchar、text、varchar(max)、nvarchar(max) 及 ntext,Unicode 原生格式會使用 Unicode 字元資料格式。

以 SQLVARIANT 儲存在 Unicode 原生格式資料檔的 sql_variant 資料,會以它在原生格式資料檔的相同方式操作,不同處是 char 及 varchar 值會轉換為 nchar 及 nvarchar,這會讓受影響資料行所需的儲存體數量加倍。原始中繼資料會加以保留,而且在大量匯入資料表資料行時,這些值會轉換回它們的原始 char 及 varchar 資料類型。

[!附註]

如需原生格式的詳細資訊,請參閱<使用原生格式匯入或匯出資料>。

Unicode 原生格式的命令選項

您可以使用 bcp、BULK INSERT 或 INSERT,將 Unicode 原生格式資料匯入資料表 ...SELECT * FROM OPENROWSET(BULK...)。針對 bcp 命令或 BULK INSERT 陳述式,您可以在命令列上指定資料格式。針對 INSERT ...SELECT * FROM OPENROWSET(BULK...) 陳述式,您必須在格式檔案中指定資料格式。

下列選項支援 Unicode 原生格式:

命令

選項

描述

bcp

-N

導致 bcp 公用程式使用 Unicode 原生格式,這個格式會對所有非字元資料使用原生 (資料庫) 資料類型,對所有字元 (char、nchar、varchar、nvarchar、text 及 ntext) 資料使用 Unicode 字元資料格式。

BULK INSERT

DATAFILETYPE ='widenative'

當大量匯入資料時,使用 Unicode 原生格式。

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

[!附註]

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

範例

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

範例資料表

以上範例需要在 dbo 結構描述下的 AdventureWorks 範例資料庫中,建立一個名為 myTestKeepNulls 的資料表。您必須先建立這個資料表,才能執行範例。在 SQL Server Management Studio 查詢編輯器中,執行:

USE AdventureWorks;
GO
CREATE TABLE myTestUniNativeData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

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

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

使用 bcp 大量匯出原生資料

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

限定詞

描述

-N

指定原生資料類型。

-T

指定 bcp 公用程式使用整合式安全性的信任連接,來連接到 SQL Server。如果未指定 -T,您必須指定 -U-P 才能成功登入。

下列範例會以原生格式從 myTestUniNativeData 資料表,將資料大量匯出至名為 myTestUniNativeData-N.Dat 資料檔的新資料檔。在 Microsoft Windows 命令提示字元中,輸入:

bcp AdventureWorks..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T

使用 BULK INSERT 大量匯入原生資料

下列範例使用 BULK INSERT 將 myTestUniNativeData-N.Dat 資料檔中的資料匯入至 myTestUniNativeData 資料表。在 SQL Server Management Studio 查詢編輯器中,執行:

USE AdventureWorks;
GO
BULK INSERT myTestUniNativeData 
    FROM 'C:\myTestUniNativeData-N.Dat' 
   WITH (DATAFILETYPE='widenative'); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;
GO