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 の使用法 » リモート・データとバルク・オペレーション » データのインポートとエクスポート » データのインポート

 

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

INSERT 文は、データベースにローを追加するために使用します。INSERT 文にはインポート先テーブルにインポートするデータが含まれているため、この文は対話型入力と見なされます。リモート・データ・アクセスに INSERT 文を使用して、ファイルではなく別のデータベースからデータをインポートすることもできます。

次の場合は、INSERT 文を使用してデータをインポートします。

  • 1 つのテーブルに少量のデータをインポートする場合

  • ファイル・フォーマットが柔軟な場合

  • ファイルではなく外部データベースからリモート・データをインポートする場合

INSERT 文では、ON EXISTING 句を使用して、挿入するローがすでに挿入先のテーブルに存在する場合に実行するアクションを指定できます。ただし、ON EXISTING 条件を満たすローが数多く存在する可能性がある場合は、代わりに MERGE 文を使用してください。MERGE 文を使用すると、一致するローに対して実行するアクションをより詳細に制御できます。また、一致を定義するためのより高度な構文も使用できます。MERGE 文を参照してください。

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

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

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

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

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

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

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

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

INSERT 文を使用すると、変更内容はトランザクション・ログに記録されます。このため、データベース・ファイルに関するメディア障害が発生した場合は、変更内容に関する情報をトランザクション・ログからリカバリできます。

♦  データをインポートするには、次の手順に従います (INSERT 文の場合)。

次の例では、SQL Anywhere サンプル・データベースの Departments テーブルにデータが追加されます。

  1. インポート先テーブルが存在することを確認します。

  2. INSERT 文を実行します。次に例を示します。

    次の例では、SQL Anywhere サンプル・データベースの Departments テーブルに新しいローを挿入します。

    INSERT
    INTO Departments ( DepartmentID, DepartmentName, DepartmentHeadID )
    VALUES ( 700, 'Training', 501)
    SELECT * FROM Departments;

    値を挿入すると、新しいデータが既存のテーブルに追加されます。

参照