内容へ移動
Mako Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
ja:oracle:sql_loader
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Oracle SQL∗Loader ====== CSVファイルなどから、Oracleへデータを流し込むツール\\ CSVや固定長の**データファイル**と、データファイルのロードに関する設定を記述した**コントロールファイル**を準備する。\\ ===== コントロールファイル ===== コントロールファイルに記述する各種設定は、必要なもののみ記述し、不要なものは記述しない。\\ ==== 主な項目 ==== * **options**\\ 読み込み時の設定を記述。load dataよりも前に書かれるのは、これだけと思われる。 * **load**\\ ロードするレコード数 * **-1**の場合、全て * **skip**\\ スキップするレコード数 * **-1**の場合、429497295(0xffffffff) * **errors**\\ 許容するエラー数 * **-1**の場合、全て * **rows**\\ 何件ごとにコミットを行うかの行数 * **-1**の場合、429497295(0xffffffff) * **load data**\\ ほぼお約束の記述。 * **infile**\\ 入力対象となるデータファイルを指定する。 * **badfile**\\ 何らかのエラーにより、Oracleへの投入に失敗したデータがあると、ここで指定したファイルに出力される。 * //<投入モード>//\\ データの入力時のモード * **insert**\\ データは新規でロードされる。テーブルは空である事が前提。既にデータが存在している場合、それが重複しないデータであってもエラーとなる。 * **append**\\ データを追加でロードする。既にデータがある場合は、duplicateしないデータのみ追加される。 * **replace**\\ 既にテーブルにある全レコードを削除して、新規にデータをロードする。削除方法はdelete文での削除に相当する。 * **truncate**\\ replaceと同じ。ただし削除はtruncateに相当する。 * **into table**\\ データの投入先のテーブルを指定する * **when**\\ データの投入条件を指定する。where句と似た書き方をするが、比較演算子として**=**,**<>**,**!=**および**AND**しか使用できない。 * **fields //<設定値>//**\\ データの投入対象の列を指定する。 * **terminated by //<区切り文字>//**\\ データの区切り文字を指定する。 * **カンマ区切り**\\ terminated by "," * **タブ区切り**\\ terminated by X'09'\\ terminated by ' ' ←シングルクォートの間はタブ * **optionally enclosed by //<囲み記号>//**\\ データを囲む記号がある場合に指定する。 * **ダブルクォートで括る場合**\\ optionally enclosed by '"' * **(//<項目名>//,//<項目名>//,…)**\\ データ投入先テーブルの項目名を列挙する。データファイル内の並び順に合わせて列挙する。 ===== 例 ===== * **データ入替**\\ テーブルHOGEの内容を一旦すべて削除した後、/home/hogehoge/foobar.txtの内容を投入する。<code> load data infile '/home/hogehoge/foobar.txt' replace into table HOGE fields terminated by ' ' (hoge_cd, hoge_name, hoge_flg) </code> ===== 環境変数 ===== 実際にsqlldrコマンドを使用する時には、実行するユーザの環境変数を正しく宣言しておかないとうまく入らない。\\ 実行用のシェルスクリプトなどを準備しておいて、<code bash> #!/bin/sh export ORACLE_HOME=/oracle/app/oracle/product/x.x.x export LD_LIBRARY_PATH=/oracle/app/oracle/product/x.x.x/lib export PATH=/oracle/app/oracle/product/x.x.x/bin export NLS_LANG=Japanese_Japan.JA16SJIS sqlldr {ID}/{PASS} control='{コントロールファイルのパス}' </code> といった具合で。\\ oracle用のユーザで実行する分にはだいたいちゃんとなっていると思うので、**NLS_LANG**をDBの文字コードと合わせておいて、投入するデータファイルの文字コードも統一しておけば多分すんなり入る。
ja/oracle/sql_loader.txt
· 最終更新: 2014/07/15 08:12 by
makoto
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ