一括エクスポートまたは一括インポートのデータの準備 (SQL Server)Prepare Data for Bulk Export or Import (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

ここでは、一括エクスポート操作の計画に関する考慮事項と一括インポート操作の要件について説明します。This section discusses the considerations involved in planning for bulk-export operations and the requirements for bulk-import operations.

注意

一括インポート用にデータ ファイルの書式を設定する方法が不明確な場合は、 bcp ユーティリティを使用して、データをテーブルからデータ ファイルにエクスポートします。If you are uncertain about how to format a data file for bulk importing, use the bcp utility to export data from the table into a data file. このファイル内の各データ フィールドの書式設定では、データを対応するテーブル列に一括インポートする際に必要な書式設定が示されています。The formatting of each data field in this file shows the formatting required to bulk import data into the corresponding table column. データ ファイルのフィールドに同じデータの書式設定を使用してください。Use the same data formatting for fields of your data file.

一括エクスポートのデータ ファイル形式に関する注意点Data-File Format Considerations for Bulk Export

bcp コマンドを使用して一括エクスポート操作を実行する前に、次のことを考慮してください:Before you perform a bulk-export operation by using the bcp command, consider the following:

  • データをファイルにエクスポートする際、 bcp コマンドにより、指定したファイル名のデータ ファイルが自動的に作成されます。When data is exported to a file, the bcp command creates the data file automatically by using the specified file name. 指定の名前が既に使用されている場合、そのファイルの既存のコンテンツは、そのデータ ファイルに一括コピーするデータで上書きされます。If that file name is already in use, the data that is being bulk copied to the data file overwrites the existing contents of the file.

  • テーブルまたはビューからデータを一括エクスポートする場合、一括コピーするテーブルまたはビューに SELECT 権限が必要になります。Bulk export from a table or view to a data file requires SELECT permission on the table or view that is being bulk copied.

  • MicrosoftMicrosoft SQL ServerSQL Server では、データの取得に並列スキャンを使用できます。SQL ServerSQL Server can use parallel scans to retrieve data. そのため、 SQL ServerSQL Server インスタンスから一括エクスポートされるテーブル行は、通常、エクスポート先のデータ ファイルで特定の順序で表示されるとは保証されません。Therefore, the table rows that are bulk exported in from an instance of SQL ServerSQL Server are not ordinarily guaranteed to be in any specific order in the data file. 一括エクスポートされたテーブル行がデータ ファイル内に特定の順序で表示されるようにするには、 queryout オプションを使用してクエリから一括エクスポートを行い、ORDER BY 句を指定します。To make bulk-exported table rows appear in a specific order in the data file, use the queryout option to bulk export from a query, and specify an ORDER BY clause.

一括インポートのデータ ファイル形式の要件Data-File Format Requirements for Bulk Import

データ ファイルからデータをインポートするには、データ ファイルは以下の基本要件を満たしている必要があります。To import data from a data file, the file must meet the following basic requirements:

  • データは、行と列の形式になっている必要があります。The data must be in row and column format.

注意

一括インポート処理では、列がスキップされたり順番が再変更されることがあるため、データ ファイルの構造は、 SQL ServerSQL Server テーブルの構造と同一である必要はありません。The structure of the data file does not need to be identical to the structure of the SQL ServerSQL Server table because columns can be skipped or reordered during the bulk-import process.

  • データ ファイルのデータは、文字列形式やネイティブ形式など、サポートされている形式である必要があります。The data in the data file must be in a supported format such as character or native format.

  • データは、Unicode を含む文字列形式またはネイティブ バイナリ形式にすることができます。The data can be in character or native binary format including Unicode.

  • bcp コマンド、BULK INSERT ステートメント、または INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントを使用してデータをインポートするには、インポート先のテーブルが既に存在している必要があります。To import data by using a bcp command, BULK INSERT statement, or INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, the destination table must already exist.

  • データ ファイルの各フィールドは、インポート先テーブルの対応する列と互換性がある必要があります。Each field in the data file must be compatible with the corresponding column in the target table. たとえば、 int フィールドを datetime 列に読み込むことはできません。For example, an int field cannot be loaded into a datetime column. 詳細については、「一括インポートまたは一括エクスポートのデータ形式 (SQL Server)」および「bcp を使用した互換性のためのデータ形式の指定 (SQL Server)」を参照してください。For more information, see Data Formats for Bulk Import or Bulk Export (SQL Server) and Specify Data Formats for Compatibility when Using bcp (SQL Server).

    注意

    ファイル全体をインポートするのではなく、データ ファイルからインポートする行のサブセットを指定するには、bcp コマンドと -F first_row スイッチまたは -L last_row スイッチ、あるいは両方のスイッチを組み合わせて使用します。To specify a subset of rows to import from a data file rather than the entire file, you can use a bcp command with the -F first_row switch and/or -L last_row switch. 詳細については、「 bcp Utility」を参照してください。For more information, see bcp Utility.

  • 固定長フィールドまたは固定幅フィールドを含むデータ ファイルからデータをインポートするには、フォーマット ファイルを使用します。To import data from data files with fixed-length or fixed-width fields, use a format file. 詳細については、「 XML フォーマット ファイル (SQL Server)です。For more information, see XML Format Files (SQL Server).

  • SQL ServerSQL Server の一括インポート操作では、コンマ区切り (CSV) ファイルがサポートされていません。Comma-separated value (CSV) files are not supported by SQL ServerSQL Server bulk-import operations. ただし、場合によっては、 SQL ServerSQL Serverに対してデータを一括インポートする際、CSV ファイルをデータ ファイルとして使用できます。However, in some cases, a CSV file can be used as the data file for a bulk import of data into SQL ServerSQL Server. CSV ファイルのフィールド ターミネータは必ずしもコンマである必要はありません。Note that the field terminator of a CSV file does not have to be a comma. 一括インポートのデータ ファイルとして利用できるようにするには、CSV ファイルが次の条件を満たしている必要があります。To be usable as a data file for bulk import, a CSV file must comply with the following restrictions:

    • データ フィールドにフィールド ターミネータが含まれていないこと。Data fields never contain the field terminator.

    • データ フィールドの値を囲む引用符 ("") の有無がすべての値で統一されていること。Either none or all of the values in a data field are enclosed in quotation marks ("").

    データを MicrosoftMicrosoft FoxPro や Visual FoxPro テーブル (.dbf) ファイル、または Microsoft ExcelMicrosoft Excel ワークシート (.xls) ファイルから一括インポートするには、前述の制限に準拠した CSV ファイルにデータを変換する必要があります。To bulk import data from a MicrosoftMicrosoft FoxPro or Visual FoxPro table (.dbf) file or a Microsoft ExcelMicrosoft Excel worksheet (.xls) file, you would need to convert the data into a CSV file that complies to the preceding restrictions. 通常、ファイル拡張子は .csv です。The file extension will typically be .csv. そうすると、 SQL ServerSQL Server 一括インポート操作で .csv ファイルをデータ ファイルとして使用できます。You can then use the .csv file as a data file in a SQL ServerSQL Server bulk-import operation.

    32 ビット システムでは、 SQL ServerSQL Server OPENROWSET を OLE DB Provider for Jet と共に使用することにより、一括インポートの最適化を使用せずに CSV データを テーブルにインポートできます。On 32-bit systems, it is possible to import CSV data into a SQL ServerSQL Server table without bulk-import optimizations by using OPENROWSET with the OLE DB Provider for Jet. Jet は、データ ソースと同じディレクトリ内にある schema.ini ファイルで定義されたスキーマを使用して、テキスト ファイルをテーブルとして扱います。Jet treats text files as tables, with the schema defined by a schema.ini file that is located in the same directory as the data source. CSV データの場合、schema.ini ファイル内のパラメーターの 1 つが "FORMAT=CSVDelimited" となります。For a CSV data, one of the parameters in the schema.ini file would be "FORMAT=CSVDelimited". この解決方法を使用するには、Jet Test IISAMm 操作、その接続文字列の構文、schema.ini の使用法、レジストリ設定オプションなどについて理解する必要があります。To use this solution, you would need to understand how the Jet Test IISAMm operations-its connection string syntax, schema.ini usage, registry setting options, and so on). この情報については、Microsoft Access ヘルプとサポート技術情報 (KB) の資料を参照することをお勧めします。The best sources of this information are Microsoft Access Help and Knowledge Base (KB) articles. 詳細については、「Initializing the Text Data Source Driver」 (テキスト データ ソースのドライバーを初期化する)、「How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases」 (セキュリティ設定された Access データベースにリンクされたサーバーで SQL Server 7.0 分散クエリを使用する方法)、「HOW TO:Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases」 (ISAM データベースへの接続に Jet OLE DB プロバイダー 4.0 を使用する方法)、「How To Open Delimited Text Files Using the Jet Provider's Text IIsam」 (Jet プロバイダーの Text IIsam を使用して区切り記号付きテキスト ファイルを開く方法) を参照してください。For more information, see Initializing the Text Data Source Driver, How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases, HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases, and How To Open Delimited Text Files Using the Jet Provider's Text IIsam.

また、データ ファイルのデータをテーブルに一括インポートするには、以下の要件も満たしている必要があります。In addition, the bulk import of data from a data file into a table requires the following:

  • ユーザーは、インポート先のテーブルに対する INSERT 権限および SELECT 権限を持っている必要があります。Users must have INSERT and SELECT permissions on the table. また、制約を無効にするなどデータ定義言語 (DDL) 操作が必要なオプションを使用する場合は、ALTER TABLE 権限も必要になります。Users also need ALTER TABLE permission when they use options that require data definition language (DDL) operations, such as disabling constraints.

  • BULK INSERT または INSERT ...SELECT * FROM OPENROWSET(BULK...) を使用してデータを一括インポートする際は、SQL ServerSQL Server プロセスのセキュリティ プロファイル (ユーザーが SQL ServerSQL Server で提供されたログインを使用してログインしている場合) またはデリゲートされたセキュリティに基づいて使用されている MicrosoftMicrosoft Windows ログインから、このデータ ファイルにアクセスし、読み取り操作ができる状態でなければなりません。When you bulk import data by using BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...), the data file must be accessible for read operations by either the security profile of the SQL ServerSQL Server process (if the user logs in using SQL ServerSQL Server provided login) or by the MicrosoftMicrosoft Windows login that is used under delegated security. また、ファイルを読み取るには、ユーザーに ADMINISTER BULK OPERATIONS 権限が必要です。Additionally, the user must have ADMINISTER BULK OPERATIONS permission to read the file.

注意

パーティション ビューへのデータの一括インポートはサポートされません。パーティション ビューにデータを一括インポートするとエラーになります。Bulk importing into a partitioned view is unsupported, and attempts to bulk import data into a partitioned view fail.

外部リソースExternal Resources

[HOWTO] DTS: Excel から SQL Server にデータをインポートする方法How to import data from Excel to SQL Server

変更履歴Change History

変更内容Updated content
OLE DB Provider for Jet を使用した CSV データのインポートについての情報を追加しました。Added information about using the OLE DB Provider for Jet to import CSV data.

参照See Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
データ型 (Transact-SQL) Data Types (Transact-SQL)
文字形式を使用したデータのインポートまたはエクスポート (SQL Server) Use Character Format to Import or Export Data (SQL Server)
ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)Use Native Format to Import or Export Data (SQL Server)