この文は、外部ファイルからデータベース・テーブルの中へバルク・データをインポートするために使用します。
LOAD [ INTO ] TABLE [ owner.]table-name [ ( column-name, ... ) ] load-source [ load-option ... ] [ statistics-limitation-option ]
load-source : { FROM filename-expression | USING FILE filename-expression | USING CLIENT FILE client-filename-expression | USING VALUE value-expression | USING COLUMN column-expression }
filename-expression : string | variable
client-filename-expression : string | variable
value-expression : expression
column-expression : column-name FROM table-name ORDER BY column-list
load-option : BYTE ORDER MARK { ON | OFF } | CHECK CONSTRAINTS { ON | OFF } | { COMPRESSED | AUTO COMPRESSED | NOT COMPRESSED } | { ENCRYPTED KEY 'key' | NOT ENCRYPTED } | COMMENTS INTRODUCED BY comment-prefix | COMPUTES { ON | OFF } | DEFAULTS { ON | OFF } | DELIMITED BY string | ENCODING encoding | ESCAPE CHARACTER character | ESCAPES { ON | OFF } | FORMAT { TEXT | BCP } | HEXADECIMAL { ON | OFF } | ORDER { ON | OFF } | PCTFREE percent-free-space | QUOTE string | QUOTES { ON | OFF } | ROW DELIMITED BY string | SKIP integer | STRIP { ON | OFF | LTRIM | RTRIM | BOTH } | WITH CHECKPOINT { ON | OFF } | WITH { FILE NAME | ROW | CONTENT } LOGGING
statistics-limitation-option : STATISTICS { ON [ ALL COLUMNS ] | ON KEY COLUMNS | ON ( column-list ) | OFF }
comment-prefix : string
encoding : string
column-name この句は、データのロード先となる 1 つ以上のカラムを指定するときに使用します。DEFAULTS が OFF に設定されている場合、カラム・リストにないカラムは NULL になります。DEFAULTS オプションが ON で、カラムにデフォルト値が入っている場合は、その値が使用されます。DEFAULTS オプションが OFF で、NULL 入力不可のカラムがカラム・リストから省かれている場合は、データベース・サーバは、空の文字列をカラムの型に変換しようとします。
カラム・リストが指定されていると、ファイルに存在すると思われるカラムと、想定されるファイル内でのカラムの順序がカラム・リストにリストされます。カラム名を繰り返すことはできません。リストにないカラム名は、NULL、0、空、または DEFAULT に設定されます。設定値は、カラムに NULL が許可されているかどうか、どのデータ型か、DEFAULTS が ON か OFF かによって異なります。LOAD TABLE によって無視される入力ファイル内のカラムは、カラム名 filler() を使用して指定できます。
load-source この句は、データのロード元となるデータ・ソースを指定するときに使用します。さまざまなデータ・ソースから、データをロードできます。次のリストは、サポートされているロード・ソースを示します。
FROM 句 この句は、ファイルを指定するときに使用します。filename-expression は文字列としてデータベース・サーバに渡されます。したがって、文字列は他の SQL 文字列と同じデータベースのフォーマット要件に従います。特に、次の点に注意してください。
ディレクトリ・パスを示すには、円記号 (\) を 2 つの円記号で表してください。したがって、ファイル c:\temp\input.dat から Employees テーブルにデータをロードする文は、次のようになります。
LOAD TABLE Employees FROM 'c:\\temp\\input.dat' ... |
パス名はデータベース・サーバを基準にした相対パスを指定します。クライアント・アプリケーションではありません。
UNC パス名を使用すると、データベース・サーバ以外のコンピュータ上のファイルからデータをロードできます。
USING FILE 句 この句は、ファイルからデータをロードするときに使用します。これは、FROM filename 句を指定する場合と同義です。
USING CLIENT FILE 句 この句は、クライアント・コンピュータ上のファイルからデータをロードするときに使用します。データベース・サーバが client-filename-expression からデータを取り出す場合、データはサーバのメモリに実体化されないため、ファイルにはデータベース・サーバでの BLOB 式サイズの制限が適用されません。したがって、クライアント・ファイルには任意のサイズを指定できます。
USING VALUE 句 この句は、CHAR 型、NCHAR 型、BINARY 型、または LONG BINARY 型の式や、BLOB 文字列からデータをロードするときに使用します。次は、この句を使用する方法の例です。
次の構文は、xp_read_file システム・プロシージャを使用して、対象ファイルからロードする値を取得します。
... USING VALUE xp_read_file( 'filename' )... |
次の構文は、値を直接指定して 2 つのローを挿入します。値はそれぞれ 4 と 5 です。
... USING VALUE '4\n5'... |
次の構文は、READ_CLIENT_FILE 関数の結果を値として使用します。
... USING VALUE READ_CLIENT_FILE( client-filename-expression ) |
この場合、セマンティック上同じであるため、USING CLIENT FILE client-filename-expression
も指定できます。
LOAD TABLE 文で ENCODING 句を指定しない場合、値が CHAR 型または BINARY 型のときはデータベース文字セット (db_charset) が、値が NCHAR 型のときは NCHAR データベース文字セット (nchar_charset) が値のエンコードと見なされます。
USING COLUMN 句 この句は、別のテーブルの単一カラムからデータをロードするときに使用します。リカバリ時に LOAD TABLE ... WITH CONTENT LOGGING 文をリプレイしてトランザクション・ログをリプレイする場合、データベース・サーバがこの句を使用します。LOAD TABLE ... WITH CONTENT LOGGING 文のトランザクション・ログ・レコードは、連結したローのまとまりで構成されます。リカバリ時にデータベース・サーバがトランザクション・ログ内でこうしたまとまりを見つけた場合は、このまとまりがテンポラリ・テーブルにロードされてから、元のロード操作のデータがすべてロードされます。
USING COLUMN 句では次の句がサポートされます。
table-name データのロード元となるカラムを含むベース・テーブルまたはテンポラリ・テーブルの名前。リカバリ時にデータベース・サーバがトランザクション・ログから使用する場合、解析されてロードされるローのまとまりを保持するのはこのテーブルです。
column-name ロードするローのまとまりを保持する table-name 内のカラム名。
column-list 送信先テーブルの 1 つまたは複数のカラムであり、データのロード前にローをソートするために使用。
load-option 句 さまざまなロード・オプションを使用して、データのロード方法を制御できます。次のリストは、サポートされているロード・オプションを示します。
BYTE ORDER MARK 句 この句は、エンコード内にバイト順マーク (BOM) があるかどうかを制御するときに指定します。デフォルトでは、このオプションは ON です。この場合、サーバはデータの最初でバイト順マーク (BOM) を検索して解釈できます。BYTE ORDER MARK が OFF の場合、サーバは BOM を検索しません。
ENCODING 句が指定されている場合
ENCODING 句が指定されていない場合
CHECK CONSTRAINTS 句 この句は、ロード時に制約をチェックするかどうかを制御するときに使用します。CHECK CONSTRAINTS はデフォルトで ON ですが、アンロード・ユーティリティ (dbunload) は CHECK CONSTRAINTS を OFF に設定して LOAD TABLE 文を書き出します。CHECK CONSTRAINTS を OFF に設定すると、データベースの再構築などの場合に役立つ検査制約が無効になります。まだ作成されていないユーザ定義関数を呼び出す検査制約がテーブルにあると、CHECK CONSTRAINTS が OFF に設定されていない場合、再構築は失敗します。
COMMENTS INTRODUCED BY 句 この句は、データ・ファイルに使用する文字列を指定して、コメントを導入するときに使用します。使用すると、LOAD TABLE は文字列 comment-prefix で始まる行を無視します。たとえば、次の文で、// で始まる input.dat の行は無視されます。
LOAD TABLE Employees FROM 'c:\\temp\\input.dat' COMMENTS INTRODUCED BY '//' ... |
コメントは新しい行の先頭にのみ指定できます。
COMMENTS INTRODUCED BY を省略する場合、コメントがデータとして解釈されるため、データ・ファイルにはコメントを含めないでください。
COMPRESSED 句 ロードするデータが入力ファイル内で圧縮されている場合に COMPRESSED を指定します。データベース・サーバはデータを解凍してからロードします。データが圧縮されていないときに COMPRESSED を指定した場合は、LOAD が失敗してエラーが返されます。
データベース・サーバが入力ファイル内のデータを圧縮するかどうかを判断できるようにするには、AUTO COMPRESSED を指定します。これにより、データベース・サーバはデータを解凍してからロードするようになります。
入力ファイル内のデータが圧縮されていないことを指定するには、NOT COMPRESSED を指定します。データが圧縮されているときにデータベース・サーバでそのデータを解凍しない場合にも、NOT COMPRESSED を指定できます。この場合、データは圧縮された状態でデータベースに残ります。ただし、ファイルが暗号化されて圧縮されている場合は、NOT COMPRESSED なしで NOT ENCRYPTED を使用することができません。
COMPUTES 句 デフォルトでは、このオプションは ON です。この場合、計算カラムの再計算が有効になります。COMPUTES を OFF に設定すると、計算カラムの再計算が無効になります。COMPUTES OFF は、たとえば、データベースを再構築するとき、まだ作成されていないユーザ定義関数を呼び出す計算カラムがテーブルの中にある場合に役立ちます。この場合は、COMPUTES を OFF に設定しないと再構築に失敗します。
アンロード・ユーティリティ (dbunload) は、COMPUTES を OFF に設定して LOAD TABLE 文を書き出します。
DEFAULTS 句 デフォルトでは、DEFAULTS は OFF に設定されています。DEFAULTS が OFF の場合は、カラム・リストにないカラムすべてに NULL が割り当てられます。DEFAULTS が OFF に設定されており、NULL 入力不可のカラムがカラム・リストから省かれている場合は、データベース・サーバは、空の文字列をカラムの型に変換しようとします。DEFAULTS が ON に設定されており、カラムにデフォルト値が入っている場合は、その値が使用されます。
DELIMITED BY 句 この句は、カラム・デリミタ文字を指定するときに使用します。デフォルトのカラム・デリミタ文字列はカンマです。ただし、最長で 255 バイトの文字列を指定できます。たとえば、... DELIMITED BY '###' ...
などです。指定するデリミタは文字列を用い、引用符で囲む必要があります。タブで区切った値を指定する場合、タブ文字を表す 16 進のエスケープ・シーケンス (9) を使用して、... DELIMITED BY '\x09' ...
のように指定します。
ENCODING 句 この句は、データベースにロードするデータに使用する文字エンコードを指定するときに使用します。ENCODING 句は、TEXT フォーマットでのみ使用できます。
変換エラーがロード操作時に発生した場合、on_charset_conversion_failure オプションの設定に基づいてレポートされます。on_charset_conversion_failure オプション [データベース]を参照してください。
SQL Anywhere でサポートされるエンコードのリストを取得する方法については、サポートされている文字セットを参照してください。
データにバイト順マークを含めるには、BYTE ORDER 句を指定します。
ENCRYPTED 句 この句は、暗号化設定を指定するときに使用します。暗号化されたデータをロードする場合は、ENCRYPTED KEY に続けて、入力ファイル内のデータ暗号化に使用するキーを指定します。
入力ファイル内のデータが暗号化されていないことを指定するには、NOT ENCRYPTED を指定します。データが暗号化されているときにデータベース・サーバでそのデータを解凍しない場合にも、NOT ENCRYPTED を指定できます。この場合、データは圧縮された状態でデータベースに残ります。ただし、ファイルが暗号化されて圧縮されている場合は、NOT COMPRESSED なしで NOT ENCRYPTED を使用することができません。
ESCAPE CHARACTER 句 この句は、データで使用するエスケープ文字を指定するときに使用します。16 進のコードと記号として格納されている文字に使用するデフォルトのエスケープ文字は円記号 (\) です。たとえば、\x0A は改行文字です。エスケープ文字は、ESCAPE CHARACTER 句を使って変更することができます。たとえば、感嘆符 (!) をエスケープ文字として使用するには、次のように入力します。
ESCAPE CHARACTER '!' |
エスケープ文字として使用できるのは、1 つの 1 バイト文字だけです。
ESCAPES 句 この句は、エスケープ文字を認識するかどうかを制御するときに使用します。ESCAPES を ON (デフォルト) にすると、データベース・サーバによって円記号に続く文字が認識され、特殊文字として解釈されます。改行文字は \n との組み合わせとしてインクルードされ、他の文字はタブ文字の \x09 のような 16 進の ASCII のコードとしてデータにインクルードされます。2 つの円記号 (\) は 1 つの円記号として解釈されます。円記号 (\) の後に n、x、X、\ 以外の文字がある場合、それらは別々の文字と解釈されます。たとえば、\q であれば、円記号と q が挿入されます。
FORMAT 句 この句は、データのロード元となるデータ・ソースのフォーマットを指定するときに使用します。TEXT を選択すると、(ENCODING オプションで定義したとおりに) 入力行は文字と見なされ、1 行あたり 1 つのローで構成され、カラム・デリミタ文字列によって値が区切られます。BCP を選択すると、BLOB を含む Adaptive Server Enterprise 生成の BCP アウト・ファイルをインポートできます。
HEXADECIMAL 句 この句は、バイナリ値を 16 進として読み込むかどうかを指定するときに使用します。デフォルトでは、HEXADECIMAL は ON です。HEXADECIMAL ON の場合、バイナリ・カラム値は 0xnnnnnn... として読み込まれます。ここで、0x は 1 つのゼロの後に 1 つの x が続きます。n はそれぞれ 16 進数の数字です。マルチバイト文字セットを扱う場合は、HEXADECIMAL ON を使用することが重要です。
HEXADECIMAL 句を使用する場合は、FORMAT TEXT 句のみ指定してください。
ORDER 句 この句は、ロード時にデータをソートする順序を指定するときに使用します。ORDER のデフォルトは ON です。ORDER が ON に設定され、クラスタード・インデックスが宣言されている場合、LOAD TABLE はクラスタード・インデックスに従って入力データをソートし、同じ順序でローを挿入します。ロードするデータがすでにソート済みの場合は、ORDER を OFF に設定してください。クラスタード・インデックスの使用を参照してください。
PCTFREE 句 この句は、各テーブル・ページに確保する空き領域の割合を指定するときに使用します。この設定は、テーブルに対する永続的な設定を上書きしますが、それはロード中のみ実行されます。また、ロードされているデータだけが対象となります。percent-free-space の値は、0 ~ 100 の間の整数です。0 を指定すると、各ページに空き領域を残さず、各ページを完全にパックします。高い値に設定すると、各ローは単独でページに挿入されます。PCTFREE の詳細については、CREATE TABLE 文を参照してください。
QUOTE 句 QUOTE 句は TEXT データ専用です。string は文字列値を囲みます。デフォルトは一重引用符 (アポストロフィ) です。
QUOTES 句 この句は、文字列を引用符で囲むかどうかを指定するときに使用します。QUOTES を ON (デフォルト) に設定すると、LOAD TABLE 文は引用符文字で囲まれた文字列を探します。引用符文字はアポストロフィ (一重引用符) または二重引用符のいずれかです。文字列の中で最初に出てくるこのような文字は、その文字列の引用符文字として処理されます。文字列の終わりには先頭にあるものと同じ引用符が必要です。
QUOTES を ON に設定すると、カラム・デリミタ文字列をカラム値の中に入れることができます。また、引用符文字は値の一部とは見なされません。したがって、次の行はアドレスにカンマがあるかどうかは関係ありません。また、アドレスを囲む引用符は、データベースへは挿入されません。
'123 High Street, Anytown',(715)398-2354 |
値の中に引用符文字を含めるには、QUOTES を ON に設定して、2 つの引用符を使用します。次の行は、第 3 カラムの中へ一重引用符文字である値を入れます。
'123 High Street, Anytown','(715)398-2354','''' |
ROW DELIMITED BY 句 この句は、入力レコードの末尾を示す文字列を指定するときに使用します。デフォルトのデリミタ文字列は改行 (\n) です。ただし、最長で 255 バイトの文字列を指定できます。たとえば、ROW DELIMITED BY '###'
などです。他の SQL 文字列と同じフォーマット要件が適用されます。タブで区切った値を指定する場合、タブ文字を表す 16 進のエスケープ・シーケンス (9) を使用して、ROW DELIMITED BY '\x09'
のように指定します。デリミタ文字列に \n が含まれる場合、\r\n または \n のどちらかに一致します。
SKIP 句 この句は、ファイルの最初の数行を無視するかどうかを指定するときに使用します。integer 引数では、スキップする行数を指定します。たとえば、この句を使用して、カラム見出しを含む行をスキップできます。ロー・デリミタがデフォルト (改行) でない場合、引用符で囲まれた文字列とともに埋め込まれたロー・デリミタがデータに含まれると、スキップが正しく動作しないことがあります。
STRIP 句 この句は、引用符がない値に、値を挿入する前に削除された先行ブランクまたは後続ブランクがあるかどうかを指定するときに使用します。STRIP オプションは次のオプションを受け入れます。
STRIP OFF 先行ブランクまたは後続ブランクを削除しません。
STRIP LTRIM 先行ブランクを削除します。
STRIP RTRIM 後続ブランクを削除します。
STRIP BOTH 先行ブランクと後続ブランクの両方を削除します。
STRIP ON 廃止予定。STRIP RTRIM と同等です。
WITH CHECKPOINT 句 この句は、チェックポイントを実行するかどうかを指定するときに使用します。デフォルト設定は OFF です。この句を ON に設定すると、文が正常に完了し、ロギングされた後にチェックポイントが発行されます。この句が ON に設定されているとき、CHECKPOINT を発行する前にデータベースの自動リカバリが必要な場合にリカバリが正しく完了するためには、テーブルのロードに使用されるデータ・ファイルが存在している必要があります。WITH CHECKPOINT ON を指定し、リカバリが続いて必要な場合、リカバリはチェックポイントの後で始まり、データ・ファイルは存在する必要はありません。
データベースが破損したため、バックアップを使用して現在のログ・ファイルを適用する必要がある場合は、この句に何が指定されているかに関係なく、データ・ファイルが必要となります。
データベース・オプション conversion_error を Off に設定すると、不正なデータをロードしてもエラーがレポートされないことがあります。WITH CHECKPOINT ON を指定しない場合、データベースのリカバリが必要となったときには、conversion_error が On (デフォルト値) であれば、リカバリが失敗することがあります。conversion_error を Off に設定したときは、WITH CHECKPOINT ON を指定してテーブルをロードすることをおすすめします。
conversion_error オプションの詳細については、conversion_error オプション [互換性]を参照してください。
WITH { FILE NAME | ROW | CONTENT } LOGGING この句は、ロード操作時にトランザクション・ログに記録される詳細レベルを制御するときに使用します。ロギングのレベルを次に示します。
WITH FILE NAME LOGGING 句 WITH FILE NAME LOGGING 句を指定すると、LOAD TABLE 文のみがトランザクション・ログに記録されます。リカバリ時にトランザクション・ログを使用する場合に結果が矛盾しないようにするには、元のロード操作に使用したファイルが元のロケーションにあり、そのファイルに元のデータが含まれている必要があります。このロギング・レベルはパフォーマンスに影響を与えません。ただし、データベースがミラーリングまたは同期を行っている場合は、このレベルを使用しないでください。また、式またはクライアント・ファイルからロードする場合にも、このレベルは使用できません。
LOAD TABLE 文でロギング・レベルを指定しない場合、次を指定したときは WITH FILE NAME LOGGING がデフォルトのレベルになります。
WITH ROW LOGGING 句 WITH ROW LOGGING 句を指定すると、各ローのロードが INSERT 文としてトランザクション・ログに記録されます。このロギング・レベルは、同期を行っているデータベースにおすすめします。また、データベース・ミラーリングでサポートされています。ただし、大量のデータをロードする場合、このロギング・タイプがパフォーマンスに影響したり、トランザクション・ログがかなり長くなったりする可能性があります。
また、このレベルは、計算カラムや CURRENT TIMESTAMP のデフォルトなどの非決定的な値がロード先のテーブルに含まれている場合に最適です。
WITH CONTENT LOGGING 句 WITH CONTENT LOGGING 句を指定すると、データベース・サーバはロードされるローの内容を連結します。これらのまとまりは、リカバリ時にトランザクション・ログからなど、後からローに再構成できます。大量のデータをロードする場合、このロギング・タイプはパフォーマンスへの影響が非常に少なく、強力にデータを保護できますが、トランザクション・ログが長くなります。このロギング・レベルは、ミラーリングを行っているデータベース、または後でリカバリするために元のデータ・ファイルを維持しない方が望ましい場合におすすめします。
データベースが同期を行っている場合は、WITH CONTENT LOGGING 句を使用できません。
LOAD TABLE 文でロギング・レベルを指定しない場合、次を指定したときは WITH CONTENT LOGGING がデフォルトのレベルになります。
USING CLIENT FILE client-filename-expression
USING VALUE value-expression
USING COLUMN column-expression
statistics-limitation-option LOAD TABLE の実行中に統計が生成されるカラムを制限できます。制限しないと、すべてのカラムに対して統計が生成されます。統計が一部のカラムで使用されないことが確かな場合のみ、この句を使用してください。ON ALL COLUMNS (デフォルト)、OFF、ON KEY COLUMNS、または統計を生成するカラムのリストを指定できます。
LOAD TABLE を使うと、ファイルからデータベース・テーブルの中へ効率よく大量の挿入を行えます。LOAD TABLE は、Interactive SQL 文の INPUT より効率的です。
LOAD TABLE は、テーブル全体に書き込みロックをかけます。ベース・テーブルとグローバル・テンポラリ・テーブルの場合、コミットが実行されます。ローカル・テンポラリ・テーブルの場合、コミットは実行されません。
即時テキスト・インデックスが構築されているテーブル、または即時ビューから参照されているテーブルで LOAD TABLE を使用しようとすると、ロードは失敗します。即時テキスト・インデックス以外のインデックスまたはマテリアライズド・ビューでこのようなことは発生しません。ただし、従属するインデックスやマテリアライズド・ビューのデータをトランケートしてから LOAD TABLE 文を実行し、その後、インデックスとビューをリフレッシュすることを強くおすすめします。TRUNCATE 文とTRUNCATE TEXT INDEX 文を参照してください。
作成時に ON COMMIT DELETE ROWS が明示的またはデフォルトで指定されている場合、テンポラリ・テーブルには LOAD TABLE 文を使用しないでください。ただし、ON COMMIT PRESERVE ROWS または NOT TRANSACTIONAL が指定されている場合、LOAD TABLE を使用できます。
FORMAT TEXT の場合、値を指定しないことが、NULL 値を指定することになります。たとえば、1,,'Fred',
という値を含むファイルに 3 つの値が予想される場合、挿入される値は 1、NULL、Fred です。ファイルに 1,2,
が含まれる場合、値 1、2、NULL が挿入されます。空白のみで構成される値は、NULL 値と扱われます。ファイルに 1, ,'Fred',
が含まれる場合、値 1、NULL、Fred が挿入されます。他の値はすべて NULL 以外と扱われます。たとえば、'' (一重引用符が 2 つ) は空の文字列です。'NULL' は 4 文字の文字列です。
LOAD TABLE でロードしていないカラムが NULL 値を許容しておらず、ファイル値が NULL の場合、数値カラムには値 0 (ゼロ)、文字カラムには空の文字列 ('') が指定されます。LOAD TABLE でロードされたカラムが NULL 値を許容し、ファイル値が NULL の場合、カラム値は (すべての型で) NULL になります。
テーブルにカラム a、b、および c、入力データに a、b、および c があるとき、データのロード先カラムとして a と b のみを LOAD 文に指定すると、次の値がカラム c に挿入されます。
DEFAULTS ON が指定されると、カラム c にデフォルト値が入っている場合は、デフォルト値が使用されます。
カラム c が NULL 値を許容するときにデフォルトが定義されていない場合は、NULL が使用されます。
カラム c が NULL を許容しないときにデフォルトが定義されていない場合は、カラムのデータ型に応じて、ゼロ (0) または空の文字列 ('') が使用されるか、またはエラーが返されます。
LOAD TABLE とカラム統計 LOAD TABLE は、テーブルのカラムに関するヒストグラムを作成するために、データのロード時にカラム統計を取得します。ヒストグラムは、オプティマイザによって使用されます。オプティマイザがカラム統計を使用する方法の詳細については、オプティマイザの推定とカラム統計を参照してください。
次に、ロードとカラム統計に関する追加のヒントを示します。
LOAD TABLE は、今後の使用のためにベース・テーブルに関する統計情報を保存します。グローバル・テンポラリ・テーブルに関する統計情報は保存しません。
以前にデータが含まれていた可能性のある空のテーブルにデータをロードする場合は、LOAD TABLE 文を実行する前にカラムの統計を削除します。DROP STATISTICS 文を参照してください。
カラムで LOAD TABLE が実行されたときにカラムの統計が存在すると、このカラムの統計は再計算されません。代わりに、既存の統計に新しいデータの統計が挿入されます。これは、既存のカラム統計が古い情報である場合、カラムに新しいデータをロードした後も依然として古いデータのまま残ることを意味します。カラム統計が古いことが考えられる場合は、LOAD TABLE 文の実行の前または後に更新することを検討します。カラム統計の更新によるオプティマイザのパフォーマンス向上を参照してください。
LOAD TABLE は、テーブルに 5 つ以上のローがある場合にのみ統計情報を追加します。テーブルのローの数が 5 つ以上の場合、ヒストグラムは次のように変更されます。
テーブル内の既存データの有無 | ヒストグラムの有無 | 実行されるアクション |
---|---|---|
あり | あり | 既存のヒストグラムに変更を統合する |
あり | なし | ヒストグラムを構築しない |
なし | あり | 既存のヒストグラムに変更を統合する |
なし | なし | 新しいヒストグラムを作成する |
LOAD TABLE は、ロードされたローの 90% を超える値が NULL 値の場合、カラムの統計情報を生成しません。
動的に構成されたファイル名の使用 変数にファイル名を割り当て、その変数名を LOAD TABLE 文で使用することによって、動的に構成されたファイル名を使用して、LOAD TABLE 文を実行できます。
LOAD TABLE 文を実行するのに必要なパーミッションは、データベース・サーバの -gl オプションによって次のように異なります。
-gl オプションが ALL に設定されている場合、テーブルの所有者であること、DBA 権限を持っていること、または ALTER 権限を持っていることのいずれかの条件に該当している必要があります。
-gl オプションが DBA に設定されている場合、DBA 権限を持っていることが必要です。
-gl オプションが NONE に設定されている場合、LOAD TABLE は使用できません。
-gl サーバ・オプションを参照してください。
テーブルに排他ロックを実行してください。
クライアント・コンピュータにあるファイルからデータを読み込む場合
READCLIENTFILE 権限が必要です。READCLIENTFILE 権限を参照してください。
読み込み元のディレクトリに対する読み込みパーミッションが必要です。
allow_read_client_file データベース・オプションが有効になっている必要があります。allow_read_client_file オプション [データベース]を参照してください。
read_client_file セキュア機能が有効になっている必要があります。-sf サーバ・オプションを参照してください。
オートコミット。
挿入は、WITH ROW LOGGING 句が指定された場合を除き、ログファイルに記録されません。そのため、ロギング・タイプによっては、エラーが発生した場合に、挿入されたローを回復できないことがあります。また、Mobile Link クライアントとして使用されるデータベースまたは SQL Remote レプリケーションに関連するデータベースでは、WITH ROW LOGGING 句のない LOAD TABLE 文は使用しないでください。これは、これらのテクノロジでは、ログ・ファイルを解析して変更がレプリケートされるためです。
LOAD TABLE 文は、テーブルに関連したトリガは起動しません。
チェックポイントはオペレーションの開始時に実行されます。WITH CHECKPOINT ON を指定すると、2 番目のチェックポイントが終了時に実行されます。
データを大量にロードすると、カラム統計が更新されます。
SQL/2003 ベンダ拡張。
次に、LOAD TABLE の例を示します。まずテーブルを作成し、次に input.txt というファイルを使用してテーブルにデータをロードします。
CREATE TABLE t( a CHAR(100), let_me_default INT DEFAULT 1, c CHAR(100) ); |
次に、ファイル input.txt の内容を示します。
ignore_me, this_is_for_column_c, this_is_for_column_a |
次の LOAD 文は、input.txt というファイルをロードします。
LOAD TABLE T ( filler(), c, a ) FROM 'input.txt' FORMAT TEXT DEFAULTS ON; |
コマンド SELECT * FROM t
は、次の結果セットを返します。
a | let_me_default | c |
---|---|---|
this_is_for_column_a | 1 | this_is_for_column_c |
次の例は、動的に構成されたファイル名を指定し、EXECUTE IMMEDIATE 文を使用して、LOAD TABLE 文を実行します。
CREATE PROCEDURE LoadData( IN from_file LONG VARCHAR ) BEGIN DECLARE path LONG VARCHAR; SET path = 'd:\\data\\' || from_file; LOAD TABLE MyTable FROM path; END; |
次の例は、UTF-8 エンコードのテーブル・データを mytable にロードします。
LOAD TABLE mytable FROM 'mytable_data_in_utf8.dat' ENCODING 'UTF-8'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |