一括エクスポートまたは一括インポートのデータの準備

更新 : 2007 年 9 月 15 日

ここでは、一括エクスポート操作の計画に関する考慮事項と一括インポート操作の要件について説明します。

ms188609.note(ja-jp,SQL.90).gifメモ :
一括インポート用にデータ ファイルの書式を設定する方法が不明確な場合は、bcp ユーティリティを使用して、データをテーブルからデータ ファイルにエクスポートできます。このファイル内の各データ フィールドの書式設定では、データを対応するテーブル列に一括インポートする際に必要な書式設定が示されています。データ ファイルのフィールドに同じデータの書式設定を使用してください。

一括エクスポートのデータ ファイル形式に関する注意点

bcp コマンドを使用して一括エクスポート操作を実行する前に、次のことを考慮してください。

  • データをファイルにエクスポートする際、bcp コマンドにより、指定したファイル名のデータ ファイルが自動的に作成されます。指定の名前が既に使用されている場合、そのファイルの既存のコンテンツは、そのデータファイルに一括コピーするデータで上書きされます。
  • テーブルまたはビューからデータを一括エクスポートする場合、一括コピーするテーブルまたはビューに SELECT 権限が必要になります。
  • Microsoft SQL Server では、データの取得に並列スキャンを使用できます。そのため、SQL Server インスタンスから一括エクスポートされるテーブル行は、通常、エクスポート先のデータ ファイルで特定の順序で表示されるとは保証されません。一括エクスポートされたテーブル行がデータ ファイル内に特定の順序で表示されるようにするには、queryout オプションを使用してクエリから一括エクスポートを行い、ORDER BY 句を指定します。詳細については、「クエリからデータ ファイルへのデータのエクスポート」を参照してください。

一括インポートのデータ ファイル形式の要件

データ ファイルからデータをインポートするには、データ ファイルは以下の基本要件を満たしている必要があります。

  • データは、行と列の形式になっている必要があります。
ms188609.note(ja-jp,SQL.90).gifメモ :
一括インポート処理では、列がスキップされたり順番が再変更されることがあるため、データ ファイルの構造は、SQL Server テーブルの構造と同一である必要はありません。
  • データ ファイルのデータは、文字列形式やネイティブ形式など、サポートされている形式である必要があります。
  • データは、Unicode を含む文字列形式またはネイティブ バイナリ形式にすることができます。
  • bcp コマンド、BULK INSERT ステートメント、または INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントを使用してデータをインポートするには、インポート先のテーブルが既に存在している必要があります。
  • データ ファイルの各フィールドは、インポート先テーブルの対応する列と互換性がある必要があります。たとえば、int フィールドを datetime 列に読み込むことはできません。詳細については、「ネイティブ形式、文字形式、または Unicode 形式の使用」および「bcp を使用した互換性のためのデータ形式の指定」を参照してください。
    ms188609.note(ja-jp,SQL.90).gifメモ :
    ファイル全体をインポートするのではなく、データ ファイルからインポートする行のサブセットを指定するには、bcp コマンドと -F first_row スイッチまたは -L last_row スイッチ、あるいは両方のスイッチを組み合わせて使用します。詳細については、「bcp ユーティリティ」を参照してください。
  • 固定長フィールドまたは固定幅フィールドを含むデータ ファイルからデータをインポートするには、フォーマット ファイルを使用する必要があります。詳細については、「XML フォーマット ファイルのサンプル」を参照してください。
  • コンマ区切り値 (CSV) ファイルをデータ ファイルとして使用して、データを SQL Server に一括インポートできる場合があります。CSV ファイルのフィールド ターミネータはコンマにする必要はありません。CSV ファイルを一括インポート用のデータ ファイルとして使用できるようにするには、次の制限に従う必要があります。
    • データ フィールドにはフィールド ターミネータを含まない。
    • データ フィールドの値は、引用符 ("") ですべて囲むか、まったく囲まないかのどちらかにする。
      Microsoft FoxPro や Visual FoxPro テーブル (.dbf) ファイル、または Microsoft Excel ワークシート (.xls) ファイルなどからデータをインポートするには、データを CSV ファイルに変換します。このファイルの拡張子は通常 .csv です。そうすると、SQL Server 一括インポート操作で .csv ファイルをデータ ファイルとして使用できます。

また、データ ファイルのデータをテーブルに一括インポートするには、以下の要件も満たしている必要があります。

  • ユーザーは、インポート先のテーブルに対する INSERT 権限および SELECT 権限を持っている必要があります。また、制約を無効にするなどデータ定義言語 (DDL) 操作が必要なオプションを使用する場合は、ALTER TABLE 権限も必要になります。
  • BULK INSERT または INSERT ...SELECT * FROM OPENROWSET(BULK...) を使用してデータを一括インポートする際は、SQL Server プロセスのセキュリティ プロファイル (ユーザーが SQL Server で提供されたログインを使用してログインしている場合) またはデリゲートされたセキュリティに基づいて使用されている Microsoft Windows ログインから、このデータ ファイルにアクセスし、読み取り操作ができる状態でなければなりません。また、ファイルを読み取るには、ユーザーに ADMINISTER BULK OPERATIONS 権限が必要です。
ms188609.note(ja-jp,SQL.90).gifメモ :
パーティション ビューへのデータの一括インポートはサポートされません。パーティション ビューにデータを一括インポートするとエラーになります。

参照

概念

文字形式を使用したデータのインポートまたはエクスポート
ネイティブ形式を使用したデータのインポートまたはエクスポート
XML フォーマット ファイルについて

その他の技術情報

bcp ユーティリティ
BULK INSERT (Transact-SQL)
データ型 (Transact-SQL)
ExportData Method
ImportData Method

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2007 年 9 月 15 日

変更内容 :
  • 一括インポート用 CSV ファイルの準備に関する説明を拡張しました。

2006 年 7 月 17 日

新しい内容 :
  • 概要に注意事項を追加しました。
  • 固定長フィールドまたは固定幅フィールドのインポート方法に関する要件を追加しました。

2006 年 4 月 14 日

新しい内容 :
  • SQL Server の外部からデータをインポートする場合のデータ ファイル形式についての情報を追加しました。