Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » リモート・データとバルク・オペレーション » データのインポートとエクスポート » データのインポート

 

INPUT 文を使用したデータのインポート

INPUT 文は、異なるファイル・フォーマットのデータを既存のテーブルや新しいテーブルにインポートするために使用します。データベースの ODBC ドライバが存在する場合は、USING 句を使用すると、異なる種類のデータベースや異なるバージョンの SQL Anywhere データベースからデータをインポートできます。

INPUT 文を使用すると、TEXT および FIXED フォーマットのデータをインポートできます。他のファイル・フォーマットのデータをインポートするには、USING 句と ODBC データ・ソースを使用します。

デフォルトの入力フォーマットを使用したり、INPUT 文ごとにファイル・フォーマットを指定することができます。INPUT 文は Interactive SQL コマンドなので、IF 文などの複合文やストアド・プロシージャでは使用できません。

INPUT 文は、ファイルまたは他のデータベースからデータをインポートする場合に使用します。

詳細については、INPUT 文 [Interactive SQL]を参照してください。

マテリアライズド・ビューに関する考慮事項

即時ビューでは、基本となるテーブルにデータをバルク・ロードしようとするとエラーが返されます。最初にビューのデータをトランケートしてから、バルク・ロード・オペレーションを実行する必要があります。

手動ビューでは、基本となるテーブルにデータをバルク・ロードできます。ただし、ビュー内のデータは次回のリフレッシュ時までは古いままです。

テーブルへのバルク・ロード・オペレーション (INPUT など) を実行する際は、先に従属するマテリアライズド・ビューのデータをトランケートすることを検討してください。データをロードしたら、ビューをリフレッシュします。TRUNCATE 文REFRESH MATERIALIZED VIEW 文を参照してください。

テキスト・インデックスに関する考慮事項

即時テキスト・インデックスでは、基本となるテーブルで INPUT などのバルク・ロード・オペレーションを実行してからテキスト・インデックスを更新すると、自動更新にもかかわらず時間がかかる場合があります。手動テキスト・インデックスでは、リフレッシュにも時間がかかる場合があります。

テーブルへのバルク・ロード・オペレーション (INPUT など) を実行する際は、先に従属するテキスト・インデックスを削除することを検討してください。データをロードしたら、テキスト・インデックスを再作成します。DROP TEXT INDEX 文CREATE TEXT INDEX 文を参照してください。

データベースに対する影響

INPUT 文を使用すると、変更内容はトランザクション・ログに記録されます。メディア障害が発生した場合は、詳細な変更の記録があります。ただし、この方法ではすべてのローがトランザクション・ログに書き込まれるので、この方法で大量のデータをインポートすると、パフォーマンスに影響が及びます。

対照的に、LOAD TABLE 文では各ローがトランザクション・ログに保存されないため、INPUT 文よりも高速な可能性があります。ただし、サポートされるデータベースやファイル・フォーマットの面では、INPUT 文の方が柔軟性があります。

♦  データをインポートするには、次の手順に従います (INPUT 文の場合)。
  1. 次の値から成るテキスト・ファイルを作成し (値は 1 行で入力します)、new_employees.txt という名前で保存します。

    101,500,'Chan','Julia',100,'300 Royal Drive',
    'Springfield','OR','USA','97015','6175553985',
    'A','017239033',55700,'1984-09-29',,'1968-05-05',
    1,1,0,'F'
  2. Interactive SQL を開き、SQL Anywhere 11 Demo データベースに接続します。

  3. [SQL 文] ウィンドウ枠に INPUT 文を入力します。

    INPUT INTO Employees
    FROM c:\new_employees.txt
    FORMAT TEXT;
    SELECT * FROM Employees;

    この文では、SQL Anywhere 11 Demo データベース内のインポート先テーブルの名前は Employees で、new_employees.txt はソース・ファイルの名前です。

  4. 文を実行します。

    インポートに成功すると、[メッセージ] タブに、データのインポートに要した時間が表示されます。インポートに失敗した場合は、インポートに失敗した理由を示すメッセージが表示されます。

♦  データを Microsoft Excel スプレッドシートから SQL Anywhere データベースにインポートするには、次の手順に従います。
  1. Microsoft Excel でスプレッドシートを開きます。

  2. Microsoft Excel で、インポートするセルを選択し、[挿入] - [名前] - [定義] を選択します。

    選択したセルに myData などの名前を入力します。

  3. [OK] をクリックします。

  4. スプレッドシートを保存して閉じます。

  5. スプレッドシート用の ODBC データ・ソースを作成します。

    • [スタート] - [プログラム] - [SQL Anywhere 11] - [ODBC アドミニストレータ] を選択します。

    • [ユーザー DSN] タブを選択して現在のユーザー用の DSN を作成するか、[システム DSN] タブを選択してシステム全体にわたる DSN を作成します。

    • [追加] をクリックします。

      ドライバのリストから Microsoft Excel Driver を選択し、[完了] をクリックします。

    • 必要なパラメータを指定し、[OK] をクリックしてウィンドウを閉じ、データ・ソースを作成します。

      たとえば、[データ ソース名]myExcelFile と入力します。[ブックの選択] をクリックし、Excel スプレッドシート・ファイルを参照して探します。

    • [OK] をクリックして DSN を保存します。

  6. Interactive SQL を開き、SQL Anywhere データベースに接続します。

  7. 次の INPUT 文を実行して Excel スプレッドシートからデータをインポートし、t という名前の新しいテーブルに保存します。

    INPUT USING 'dsn=myExcelFile;DSN=myExcelFile' 
    FROM "myData" INTO "t" 
    CREATE TABLE ON