Unicode ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)
Unicode ネイティブ形式は、Microsoft SQL Server のインストール環境間で情報をコピーする必要がある場合に役立ちます。 非文字データに対してネイティブ形式を使用すると、時間を節約でき、文字形式との間でデータ型の不要な変換が行われなくなります。 すべての文字データに対して Unicode 文字形式を使用すると、異なるコード ページを使用している複数のサーバー間でデータを一括転送するときに、拡張文字の損失を防ぐことができます。 Unicode ネイティブ形式のデータ ファイルは、すべての一括インポート方法で読み取ることができます。
拡張文字や DBCS 文字を含むデータ ファイルを使用して SQL Server の複数のインスタンス間でデータを一括転送する場合は、Unicode ネイティブ形式を使用することをお勧めします。 非文字データの場合、Unicode ネイティブ形式ではネイティブ (データベース) データ型が使用されます。 char
、nchar
、varchar
、nvarchar
、text
、varchar(max)
、nvarchar(max)
、ntext
などの文字データの場合、Unicode ネイティブ形式では Unicode 文字データ形式が使用されます。
Unicode ネイティブ形式のデータ ファイルに SQLVARIANT として格納される sql_variant
データは、ネイティブ形式のデータ ファイルに格納される場合と同様に動作します。ただし、char
と varchar
の値がそれぞれ nchar
と nvarchar
に変換される点を除きます。この場合、影響を受ける列で 2 倍のストレージが必要になります。 元のメタデータは保持され、値はテーブル列に一括インポートされるときに、元の char
データ型や varchar
データ型に再び変換されます。
Unicode ネイティブ形式のコマンド オプション
bcp、BULK INSERT、または INSERT ... を使用して、Unicode ネイティブ形式のデータをテーブルにインポートできます。SELECT * FROM OPENROWSET(BULK...).bcp コマンドまたは BULK INSERT ステートメントの場合は、コマンド ラインでデータ形式を指定できます。 INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントの場合は、フォーマット ファイルでデータ形式を指定する必要があります。
Unicode ネイティブ形式は、次のオプションでサポートされています。
command | オプション | 説明 |
---|---|---|
bcp | -N | bcp ユーティリティで Unicode ネイティブ形式を使用します。この形式では、すべての文字以外のデータにネイティブ (データベース) データ型が使用され、すべての文字 (char 、ntext nchar varchar nvarchar text ) データに Unicode 文字データ形式が使用されます。 |
BULK INSERT | DATAFILETYPE ='widenative' | データの一括インポート時に Unicode ネイティブ形式を使用します。 |
詳細については、「 bcp ユーティリティ」、「 BULK INSERT (Transact-SQL)」、または 「OPENROWSET (Transact-SQL)」を参照してください。
注意
また、フォーマット ファイルでフィールドごとに形式を指定することもできます。 詳細については、「データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)」を参照してください。
例
次の例では、bcp を使用してネイティブ データを一括エクスポートする方法と、BULK INSERT を使用して同じデータを一括インポートする方法を説明します。
サンプル テーブル
次の例を実行するには、dbo スキーマに基づいて、myTestUniNativeData という名前のテーブルを AdventureWorks サンプル データベース内に作成する必要があります。 このテーブルを作成しないと、例を実行できません。 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
Related Tasks
一括インポートまたは一括エクスポートのデータ形式を使用するには
参照
bcp ユーティリティ
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
データ型 (Transact-SQL)