Unicode 文字形式を使用したデータのインポートまたはエクスポート (SQL Server)Use Unicode Character 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

拡張文字や DBCS 文字を含むデータ ファイルを使用して SQL ServerSQL Server の複数のインスタンス間でデータを一括転送する場合は、Unicode 文字形式を使用することをお勧めします。Unicode character format is recommended for bulk transfer of data between multiple instances of SQL ServerSQL Server by using a data file that contains extended/DBCS characters. Unicode 文字データ形式を使用すると、操作を実行するクライアントで使用しているコード ページとは異なるコード ページを使用して、サーバーからデータをエクスポートできます。The Unicode character data format allows data to be exported from a server by using a code page that differs from the code page used by the client that is performing the operation. このような場合、Unicode 文字形式を使用すると、次の利点があります。In such cases, use of Unicode character format has the following advantages:

  • 転送元のデータと転送先のデータが Unicode データ型の場合、Unicode 文字形式を使用するとすべての文字データが保持されます。If the source and destination data are Unicode data types, use of Unicode character format preserves all of the character data.

  • 転送元のデータと転送先のデータが Unicode 以外のデータ型の場合、Unicode 文字形式を使用すると、転送先のデータで表現できない転送元のデータに含まれる拡張文字の損失を最小限に抑えられます。If the source and destination data are not Unicode data types, use of Unicode character format minimizes the loss of extended characters in the source data that cannot be represented at the destination.

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

Unicode 文字形式の使用に関する注意点Considerations for Using Unicode Character Format

Unicode 文字形式を使用するときは、以下の点をご考慮ください。When using Unicode character format, consider the following:

Unicode 文字形式、bcp、フォーマット ファイルの使用に関する特別な注意点Special Considerations for Using Unicode Character Format, bcp, and a Format File

Unicode 文字形式のデータ ファイルは、Unicode ファイルの規則に従います。Unicode character format data files follow the conventions for Unicode files. ファイルの先頭の 2 バイトは、16 進数の 0xFFFE です。The first two bytes of the file are hexadecimal numbers, 0xFFFE. これらのバイトは、バイト順マーク (BOM) としての役割を果たし、高位のバイトをファイルの先頭に格納するか、最後に格納するかを指定します。These bytes serve as byte-order marks (BOM), specifying whether the high-order byte is stored first or last in the file. bcp ユーティリティ が BOM の解釈を間違えてインポート プロセスの一部が失敗し、次のようなエラー メッセージが表示される場合があります。The bcp Utility may misinterpret the BOM and cause part of your import process to fail; you may receive an error message similar as follows:

Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]Invalid character value for cast specification

次の条件下で BOM の解釈を間違える可能性があります。The BOM may be misinterpreted under the following conditions:

  • cp ユーティリティ を使用しており、 -w スイッチを使用して Unicode 文字を指定しているThe bcp Utility is used and the -w switch is used to indicate Unicode character

  • フォーマット ファイルを使用しているA format file is used

  • データ ファイルの最初のフィールドが文字以外であるThe first field in the data file is non-character

特定の 状況に次の回避策のいずれかを使用できるかどうかご検討ください。Consider whether any of the following workarounds may be available for your specific situation:

Unicode 文字形式のコマンド オプションCommand Options for Unicode Character Format

Unicode 文字形式のデータは bcpBULK INSERT、または INSERT ...SELECT * FROM OPENROWSET(BULK...) を使用してテーブルにインポートできますbcp コマンドまたは BULK INSERT ステートメントの場合は、ステートメントでデータ形式を指定できます。You can import Unicode character 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 character format is supported by the following command options:

コマンドCommand オプションOption [説明]Description
bcpbcp -w-w Unicode 文字形式を使用します。Uses the Unicode character format.
BULK INSERTBULK INSERT DATAFILETYPE ='widechar'DATAFILETYPE ='widechar' データの一括インポート時に Unicode 文字形式を使用します。Uses Unicode character 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

次のスクリプトは、 myWidechar という名前のテーブルのテスト データベースを作成し、テーブルにいくつかの初期値を設定します。The script below creates a test database, a table named myWidechar 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.myWidechar ( 
    PersonID smallint NOT NULL,
    FirstName nvarchar(25) NOT NULL,
    LastName nvarchar(30) NOT NULL,
    BirthDate date,
    AnnualSalary money
);

-- Populate table
INSERT TestDatabase.dbo.myWidechar
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.myWidechar;

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 ユーティリティ を使用し、 myWidechar.fmtのスキーマに基づいて XML 以外のフォーマット ファイル myWidecharを生成します。The following command will use the bcp utility to generate a non-xml format file, myWidechar.fmt, based on the schema of myWidechar. 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.myWidechar format nul -f D:\BCP\myWidechar.fmt -T -w

REM Review file
Notepad D:\BCP\myWidechar.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 Character Format to Export Data

-w スイッチと OUT コマンドです。-w 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.myWidechar OUT D:\BCP\myWidechar.bcp -T -w

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

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

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

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

REM Import data
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -T -w

REM Review results is SSMS

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

-w および -f スイッチと IN コマンドです。-w and -f switches and IN command. この例は bcp、フォーマット ファイル、Unicode 文字を使用し、かつデータ ファイル内の最初のデータ フィールドが文字でないため、回避策を実行する必要があります。A workaround will need to be used since this example involves bcp, a format file, Unicode character, and the first data field in the data file is non-character. 上記の「 Unicode 文字形式、bcp、フォーマット ファイルの使用に関する特別な注意点」をご覧ください。See Special Considerations for Using Unicode Character Format, bcp, and a Format File, above. データ ファイル myWidechar.bcp は、"ダミー" のレコードとして追加のレコードを追加して変更されます。このレコードはその後、-F 2 スイッチでスキップされます。The data file myWidechar.bcp will be altered by adding an additional record as a "dummy" record which will then be skipped with the -F 2 switch.

コマンド プロンプトで次のコマンドを入力し、変更手順を実行します。At a command prompt, enter the following commands and follow the modification steps:

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

REM Open data file
Notepad D:\BCP\myWidechar.bcp
REM Copy first record and then paste as new first record.  This additional record is the "dummy" record.
REM Close file.

REM Import data instructing bcp to skip dummy record with the -F 2 switch.
bcp TestDatabase.dbo.myWidechar IN D:\BCP\myWidechar.bcp -f D:\BCP\myWidechar.fmt -T -F 2

REM Review results is SSMS

REM Return data file to original state for usage in other examples
bcp TestDatabase.dbo.myWidechar OUT D:\BCP\myWidechar.bcp -T -w

フォーマット ファイルなしで BULK INSERT と Unicode文字形式を使用する方法Using BULK INSERT and Unicode Character 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.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar
    FROM 'D:\BCP\myWidechar.bcp'
    WITH (
        DATAFILETYPE = 'widechar'
        );

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

XML 形式以外のフォーマット ファイルで BULK INSERT と Unicode 文字形式を使用する方法Using BULK INSERT and Unicode Character 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.myWidechar; -- for testing
BULK INSERT TestDatabase.dbo.myWidechar
   FROM 'D:\BCP\myWidechar.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myWidechar.fmt'
        );

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

XML 形式以外のフォーマット ファイルで OPENROWSET と Unicode 文字形式を使用する方法Using OPENROWSET and Unicode Character 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.myWidechar;  -- for testing
INSERT INTO TestDatabase.dbo.myWidechar
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myWidechar.bcp', 
        FORMATFILE = 'D:\BCP\myWidechar.fmt'  
        ) AS t1;

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

関連タスク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)
Collation and Unicode SupportCollation and Unicode Support