Unicode ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)Use Unicode Native Format to Import or Export Data (SQL Server)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Unicode ネイティブ形式は、MicrosoftMicrosoft SQL ServerSQL Server のインストール環境間で情報をコピーする必要がある場合に役立ちます。Unicode native format is helpful when information must be copied from one MicrosoftMicrosoft SQL ServerSQL Server installation to another. 非文字データに対してネイティブ形式を使用すると、時間を節約でき、文字形式との間でデータ型の不要な変換が行われなくなります。The use of native format for noncharacter data saves time, eliminating unnecessary conversion of data types to and from character format. すべての文字データに対して Unicode 文字形式を使用すると、異なるコード ページを使用している複数のサーバー間でデータを一括転送するときに、拡張文字の損失を防ぐことができます。The use of Unicode character format for all character data prevents loss of any extended characters during bulk transfer of data between servers using different code pages. Unicode ネイティブ形式のデータ ファイルは、すべての一括インポート方法で読み取ることができます。A data file in Unicode native format can be read by any bulk-import method.

拡張文字や DBCS 文字を含むデータ ファイルを使用して SQL ServerSQL Server の複数のインスタンス間でデータを一括転送する場合は、Unicode ネイティブ形式を使用することをお勧めします。Unicode native format is recommended for the bulk transfer of data between multiple instances of SQL ServerSQL Server by using a data file that contains extended or DBCS characters. 非文字データの場合、Unicode ネイティブ形式ではネイティブ (データベース) データ型が使用されます。For noncharacter data, Unicode native format uses native (database) data types. charncharvarcharnvarchartextvarchar(max)nvarchar(max)ntextなどの文字データの場合、Unicode ネイティブ形式では Unicode 文字データ形式が使用されます。For character data, such as char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max), and ntext, the Unicode native format uses Unicode character data format.

Unicode ネイティブ形式のデータ ファイルに SQLVARIANT として格納される sql_variant データは、ネイティブ形式のデータ ファイルに格納される場合と同様に動作します。ただし、 charvarchar の値がそれぞれ ncharnvarcharに変換される点を除きます。この場合、影響を受ける列で 2 倍のストレージが必要になります。The sql_variant data that is stored as a SQLVARIANT in a Unicode native-format data file operates in the same manner as it does in a native-format data file, except that char and varchar values are converted to nchar and nvarchar, which doubles the amount of storage required for the affected columns. 元のメタデータは保持され、値はテーブル列に一括インポートされるときに、元の char データ型や varchar データ型に再び変換されます。The original metadata is preserved, and the values are converted back to their original char and varchar data type when bulk imported into a table column.

このトピックの内容In this Topic:
Unicode ネイティブ形式のコマンド オプションCommand Options for Unicode Native Format
テスト条件の例Example Test Conditions
 ● サンプル テーブル ● Sample Table
 ● XML 形式以外のフォーマット ファイルのサンプル ● Sample Non-XML Format File
使用例Examples
 ● bcp と Unicode ネイティブ形式を使用したデータのエクスポート ● Using bcp and Unicode Native Format to Export Data
 ● フォーマット ファイルなしで bcp と Unicode ネイティブ形式を使用してデータをインポートする方法 ● Using bcp and Unicode Native Format to Import Data without a Format File
 ● XML 形式以外のフォーマット ファイルで bcp と Unicode ネイティブ形式を使用してデータをインポートする方法 ● Using bcp and Unicode Native Format to Import Data with a Non-XML Format File
 ● フォーマット ファイルなしで BULK INSERT と Unicode ネイティブ形式を使用する方法 ● Using BULK INSERT and Unicode Native Format without a Format File
 ● XML 形式以外のフォーマット ファイルで BULK INSERT と Unicode ネイティブ形式を使用する方法 ● Using BULK INSERT and Unicode Native Format with a Non-XML Format File
 ● XML 形式以外のフォーマット ファイルで OPENROWSET と Unicode ネイティブ形式を使用する方法 ● Using OPENROWSET and Unicode Native Format with a Non-XML Format File
関連タスクRelated Tasks

Unicode ネイティブ形式のコマンド オプションCommand Options for Unicode Native Format

Unicode ネイティブ形式のデータは、bcpBULK INSERT、または INSERT ...SELECT * FROM OPENROWSET(BULK...) を使用してテーブルにインポートできますbcp コマンドまたは BULK INSERT ステートメントの場合は、ステートメントでデータ形式を指定できます。You can import Unicode native format data into a table using bcp, BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...). For a bcp command or BULK INSERT statement, you can specify the data format in the statement. INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントの場合は、フォーマット ファイルでデータ形式を指定する必要があります。For an INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, you must specify the data format in a format file.

Unicode ネイティブ形式は、次のコマンド オプションでサポートされています。Unicode native format is supported by the following command options:

コマンドCommand オプションOption [説明]Description
bcpbcp -N-N bcp ユーティリティで Unicode ネイティブ形式が使用されるようにします。Unicode ネイティブ形式では、すべての非文字データに対してネイティブ (データベース) データ型が使用され、すべての文字 (charncharvarcharnvarchartextntext) データに対して Unicode 文字データ形式が使用されます。Causes the bcp utility to use the Unicode native format, which uses native (database) data types for all noncharacter data and Unicode character data format for all character (char, nchar, varchar, nvarchar, text, and ntext) data.
BULK INSERTBULK INSERT DATAFILETYPE ='widenative'DATAFILETYPE ='widenative' データの一括インポート時に Unicode ネイティブ形式を使用します。Uses Unicode native format when bulk importing data.
OPENROWSETOPENROWSET なしN/A フォーマット ファイルを使用する必要がありますMust use a format file

注意

また、フォーマット ファイルでフィールドごとに形式を指定することもできます。Alternatively, you can specify formatting on a per-field basis in a format file. 詳細については、「 データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)」を参照してください。For more information, see Format Files for Importing or Exporting Data (SQL Server).

テスト条件の例Example Test Conditions

このトピックの例は、以下に定義されたテーブルとフォーマット ファイルに基づいています。The examples in this topic are based on the table, and format file defined below.

サンプル テーブルSample Table

次のスクリプトは、 myWidenative という名前のテーブルのテスト データベースを作成し、テーブルにいくつかの初期値を設定します。The script below creates a test database, a table named myWidenative and populates the table with some initial values. Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) で次の Transact-SQL を実行します。Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myWidenative ( 
    PersonID smallint NOT NULL,
    FirstName nvarchar(25) NOT NULL,
    LastName nvarchar(30) NOT NULL,
    BirthDate date,
    AnnualSalary money
);

-- Populate table
INSERT TestDatabase.dbo.myWidenative
VALUES 
(1, N'ϴAnthony', N'Grosse', '02-23-1980', 65000.00),
(2, N'❤Alica', N'Fatnowna', '11-14-1963', 45000.00),
(3, N'☎Stella', N'Rossenhain', '03-02-1992', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myWidenative;

XML 形式以外のフォーマット ファイルのサンプルSample Non-XML Format File

SQL Server は、非 XML 形式と XML 形式の 2 種類のフォーマット ファイルをサポートしています。SQL Server support two types of format file: non-XML format and XML format. XML 以外のフォーマットとは、以前のバージョンの SQL Server でサポートされる従来のフォーマットです。The non-XML format is the original format that is supported by earlier versions of SQL Server. 詳細については、「 XML 以外のフォーマット ファイル (SQL Server) 」を参照してください。Please review Non-XML Format Files (SQL Server) for detailed information. 次のコマンドでは、 bcp ユーティリティ を使用し、 myWidenative.fmtのスキーマに基づいて XML 以外のフォーマット ファイル myWidenativeを生成します。The following command will use the bcp utility to generate a non-xml format file, myWidenative.fmt, based on the schema of myWidenative. bcp コマンドを使用してフォーマット ファイルを作成するには、 format 引数を指定し、データ ファイルのパスの代わりに nul を使用します。To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. format オプションには、次に示す -f オプションが必要です。The format option also requires the -f option. さらに、この例では、修飾子 c を使用して文字データを指定し、 T を使用して統合セキュリティによる信頼関係接続を指定します。In addition, for this example, the qualifier c is used to specify character data, and T is used to specify a trusted connection using integrated security. コマンド プロンプトで、次のコマンドを入力します。At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

REM Review file
Notepad D:\BCP\myWidenative.fmt

重要

XML 以外のフォーマット ファイルは、キャリッジ リターン\ライン フィードで終わるようにします。Ensure your non-XML format file ends with a carriage return\line feed. そうしないと、次のエラー メッセージが発生する可能性があります。Otherwise you will likely receive the following error message:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

使用例Examples

次の例では、上記で作成したデータベースとフォーマット ファイルを使用します。The examples below use the database, and format files created above.

bcp と Unicode ネイティブ形式を使用したデータのエクスポートUsing bcp and Unicode Native Format to Export Data

-N スイッチと OUT コマンドです。-N switch and OUT command. 注: この例で作成するデータ ファイルをその後のすべての例で使用します。Note: the data file created in this example will be used in all subsequent examples. コマンド プロンプトで、次のコマンドを入力します。At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

REM Review results
NOTEPAD D:\BCP\myWidenative.bcp

フォーマット ファイルなしで bcp と Unicode ネイティブ形式を使用してデータをインポートする方法Using bcp and Unicode Native Format to Import Data without a Format File

-N スイッチと IN コマンドです。-N switch and IN command. コマンド プロンプトで、次のコマンドを入力します。At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

XML 形式以外のフォーマット ファイルで bcp と Unicode ネイティブ形式を使用してデータをインポートする方法Using bcp and Unicode Native Format to Import Data with a Non-XML Format File

-N および -f スイッチと IN コマンドです。-N and -f switches and IN command. コマンド プロンプトで、次のコマンドを入力します。At a command prompt, enter the following commands:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myWidenative;"

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -f D:\BCP\myWidenative.fmt -T

REM Review results is SSMS

フォーマット ファイルなしで BULK INSERT と Unicode ネイティブ形式を使用する方法Using BULK INSERT and Unicode Native Format without a Format File

DATAFILETYPE 引数です。DATAFILETYPE argument. Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) で次の Transact-SQL を実行します。Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
    FROM 'D:\BCP\myWidenative.bcp'
    WITH (
        DATAFILETYPE = 'widenative'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

XML 形式以外のフォーマット ファイルで BULK INSERT と Unicode ネイティブ形式を使用する方法Using BULK INSERT and Unicode Native Format with a Non-XML Format File

FORMATFILE 引数。FORMATFILE argument. Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) で次の Transact-SQL を実行します。Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative; -- for testing
BULK INSERT TestDatabase.dbo.myWidenative
   FROM 'D:\BCP\myWidenative.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myWidenative.fmt'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

XML 形式以外のフォーマット ファイルで OPENROWSET と Unicode ネイティブ形式を使用する方法Using OPENROWSET and Unicode Native Format with a Non-XML Format File

FORMATFILE 引数。FORMATFILE argument. Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS) で次の Transact-SQL を実行します。Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myWidenative;  -- for testing
INSERT INTO TestDatabase.dbo.myWidenative
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myWidenative.bcp', 
        FORMATFILE = 'D:\BCP\myWidenative.fmt'  
        ) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myWidenative;

関連タスクRelated Tasks

一括インポートまたは一括エクスポートのデータ形式を使用するにはTo use data formats for bulk import or bulk export

参照See Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
データ型 (Transact-SQL)Data Types (Transact-SQL)