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

後で別のプログラムで使われるテキスト ファイルにデータを一括エクスポートする場合や、別のプログラムにより生成されたテキスト ファイルからデータを一括インポートする場合は、文字形式の使用をお勧めします。Character format is recommended when you bulk export data to a text file that is to be used in another program or when you bulk import data from a text file that is generated by another program.

文字形式では、すべての列に文字データ形式が使用されます。Character format uses the character data format for all columns. データがスプレッドシートなどの別のプログラムで使用されるとき、または Oracle など別のデータベース ベンダーの製品から SQL ServerSQL Server のインスタンスにデータをコピーする必要があるときは、文字形式で情報を格納すると便利です。Storing information in character format is useful when the data is used with another program, such as a spreadsheet, or when the data needs to be copied into an instance of SQL ServerSQL Server from another database vendor such as Oracle.

注意

MicrosoftMicrosoftSQL ServerSQL Server のインスタンスと、拡張文字や DBCS 文字を含まない Unicode 文字データを含むデータ ファイル間でデータの一括転送を行う場合は、Unicode 文字形式を使用します。When you bulk transfer data between instances of MicrosoftMicrosoftSQL ServerSQL Server and the data file contains Unicode character data but not any extended or DBCS characters, use the Unicode character format. 詳細については、「 Unicode 文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」をご覧ください。For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

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

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

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

  • 既定では、 bcp ユーティリティ は、文字データ フィールド間の区切りにはタブ文字を、レコードの終わりには改行文字を使用します。By default, the bcp utility separates the character-data fields with the tab character and terminates the records with the newline character. 別のターミネータの指定方法の詳細については、「フィールド ターミネータと行ターミネータの指定 (SQL Server)」を参照してください。For information about how to specify alternative terminators, see Specify Field and Row Terminators (SQL Server).

  • 既定では、キャラクター モードのデータの一括エクスポートまたは一括インポートを行う前に、次の変換が実行されます。By default, before the bulk export or import of character-mode data, the following conversions are performed:

    一括操作の方向Direction of bulk operation 変換Conversion
    [エクスポート]Export データを文字表現に変換します。Converts data to character representation. 明示的に要求された場合は、データが文字の列ごとに要求されたコード ページに変換されます。If explicitly requested, the data is converted to the requested code page for character columns. コード ページが指定されていない場合は、文字データはクライアント コンピューターの OEM コード ページを使用して変換されます。If no code page is specified, the character data is converted by using the OEM code page of the client computer.
    [インポート]Import 必要に応じて、文字データをネイティブ表現に変換し、クライアントのコード ページから目的の列のコード ページに変換します。Converts character data to native representation, when necessary, and translates the character data from the client's code page to the code page of the target column(s).
  • 変換中に拡張文字が失われないようにするには、Unicode 文字形式を使用するか、コード ページを指定します。To prevent loss of extended characters during conversion, either use Unicode character format or specify a code page.

  • sql_variant データが文字形式ファイルに保存される場合は、メタデータなしで保存されます。Any sql_variant data that is stored in a character-format file is stored without metadata. 各データ値は、暗黙的なデータ変換の規則に従って char 形式に変換されます。Each data value is converted to char format, according to the rules of implicit data conversion. sql_variant 型の列にインポートされるときは、 char型のデータとしてインポートされます。When imported into a sql_variant column, the data is imported as char. sql_variant 型以外のデータ型の列にインポートされるときは、暗黙の変換を使用してデータが char から変換されます。When imported into a column with a data type other than sql_variant, the data is converted from char by using implicit conversion. 詳細については、「データ型の変換 (データベース エンジン)」を参照してください。For more information about data conversion, see Data Type Conversion (Database Engine).

  • bcp ユーティリティmoney 型の値をエクスポートする場合、コンマなどの桁区切り文字で区切らずに、小数点以下 4 桁の文字形式データ ファイルとしてエクスポートします。The bcp utility exports money values as character-format data files with four digits after the decimal point and without any digit-grouping symbols such as comma separators. たとえば、値 1,234,567.123456 を含む money 型の列は、文字列 1234567.1235 としてデータ ファイルに一括エクスポートされます。For example, a money column that contains the value 1,234,567.123456 is bulk exported to a data file as the character string 1234567.1235.

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

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

文字形式は、次のコマンド オプションでサポートされています。Character format is supported by the following command options:

コマンドCommand オプションOption [説明]Description
bcpbcp -c-c bcp ユーティリティが文字データを使用するようにします。*Causes the bcp utility to use character data.*
BULK INSERTBULK INSERT DATAFILETYPE ='char'DATAFILETYPE ='char' データの一括インポート時に文字形式を使用します。Use character format when bulk importing data.
OPENROWSETOPENROWSET なしN/A フォーマット ファイルを使用する必要がありますMust use a format file

** 文字 ( -c) データを、先行バージョンの SQL ServerSQL Server クライアントと互換性のある形式で読み込むには、 -V スイッチを使用します。*To load character (-c) data to a format compatible with earlier versions of SQL ServerSQL Server clients, use the -V switch. 詳細については、「 以前のバージョンの SQL Server からのネイティブ形式データおよび文字形式データのインポート」をご覧ください。For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

注意

また、フォーマット ファイルでフィールドごとに形式を指定することもできます。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

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

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

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

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

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

REM Review file
Notepad D:\BCP\myChar.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 と文字形式を使用したデータのエクスポートUsing bcp and Character Format to Export Data

-c スイッチと OUT コマンドです。-c 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 command:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

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

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

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

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

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

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

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

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

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

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

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

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

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

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

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

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

関連タスク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)
以前のバージョンの SQL Server からのネイティブ形式データおよび文字形式データのインポートImport Native and Character Format Data from Earlier Versions of SQL Server