DB

OracleのSQL*LoaderでCSVファイルのデータをテーブルに追加してみた

今回は、OracleのSQL*LoaderでCSVファイルのデータをテーブルに追加してみたので、共有する。SQL*Loaderで使用する定義ファイルは、SQL Developerを利用して自動生成することもできる。

前提条件

Windows端末上に、Oracleをインストール済であること。また、salesテーブルを作成済であること。Oracleのインストール手順は下記記事を参照のこと。

Windows端末にMySQL、PostgreSQL、Oracleをインストールしてみた今回はいろいろな種類のデータベースを使ってみたかったので、Windows端末に、MySQL、PostgreSQL、Oracleそれぞれの...



やってみたこと

  1. CSVファイルのデータをテーブルに追加
  2. SQL*Loaderで使用する制御ファイルの自動生成

CSVファイルのデータをテーブルに追加

SQL*Loaderを利用して、CSVファイルのデータを指定のテーブルに一括で追加することができる。その手順は以下の通り。

1) 下記のディレクトリ上に、CSVファイルとSQL*Loaderで使用する制御ファイルを用意する
CSV取込1_1

CSVファイル(insert_sales.csv)の内容は、以下の通り
CSV取込1_2

SQL*Loaderで使用する制御ファイル(SALES_DATA_TABLE.ctl)の内容は、以下の通り

CSV取込1_3
なお、上記設定により、区切り文字:,(カンマ)、囲い文字:”(ダブルクォート)、文字コード:UTF-8のCSVファイルの取り込みが行える。

フリエン(furien)は多くの案件を保有しフリーランス向けサービスも充実しているエージェントだったフリエン(furien)は、ITフリーランス(個人事業主)エンジニア専門のエージェントであるアン・コンサルティング株式会社が運営する業界...

2) コマンドプロンプト上で、sqlldrコマンドを実行し、CSVファイルのデータをテーブルにコピーする。
実行するコマンドは「sqlldr (ユーザー名)/(パスワード)@(接続識別子) CONTROL=(制御ファイルへのパス) LOG=(ログファイルへのパス) BAD=(エラーファイルへのパス) skip=(読み飛ばすヘッダー行数)」である。
CSV取込2_1

なお、sqlldrコマンドは、下記の場所に入っている。
CSV取込2_2

3) sqlldrコマンド実行後の結果は、以下の通り

CSV取込2_3
上記で、CSVファイルのデータがテーブルに格納されたことが確認できた。



「MiniTool Partition Wizard」はパーティション分割・統合・バックアップ・チェックを直感的に行える便利ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...

SQL*Loaderで使用する制御ファイルの自動生成

SQL*Loaderで使用する制御ファイル(SALES_DATA_TABLE.ctl)は、SQL Developerを使うと自動生成できる。ここでは、下記サイトを参考にして作成している。
https://dev.classmethod.jp/tool/easy-way-to-create-ctl-file-for-sql-loader/

1) salesテーブルを選択し右クリックし、「エクスポート(Export)」メニューを押下
sqlldr制御ファイル作成1

2) DDLのエクスポート(Export DDL)のチェックを外し、フォーマットで「loader」を選択し、別名保存で「個別のファイル(Separate File)」を選択し、他は下記のように指定して、「次へ(Next)」ボタンを押下
sqlldr制御ファイル作成2

3) 下記確認ダイアログが表示された場合は、「はい(Yes)」ボタンを押下
sqlldr制御ファイル作成3

4) 「次へ(Next)」ボタンを押下
sqlldr制御ファイル作成4

5) 「完了(Finish)」ボタンを押下
sqlldr制御ファイル作成5

6) 下記のように、CSVファイルとSQL*Loaderで使用する制御ファイルが作成されることが確認できる
sqlldr制御ファイル作成6-1

CSVファイルの内容は以下の通り
sqlldr制御ファイル作成6-2

SQL*Loaderで使用する制御ファイルの内容は以下の通り
sqlldr制御ファイル作成6-3
今回は、この制御ファイルを修正することで、SQL*LoaderによるCSVファイルのデータをテーブルに追加する処理を実行している。