7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

1万越えの大量のデータをDBに登録する必要があり、SQL*Loaderを使用してCSVで用意したデータを登録した方法を紹介します。改行を含むデータを登録する必要があり苦戦したので、改行のデータを投入する想定となります。

SQL*Loaderとは

大量のデータを高速にテーブルへ格納するためのOracle Database付属ツールです。
CSVファイルを元に一括でデータを取り込むことができます:point_up_tone1:

実装方法

①制御ファイルの作成

ロードするデータの形式やロード先のテーブル情報を記述します。
name.csvに記載されているデータを「m_name」テーブルに投入するという例です:point_up_tone1:
改行データの場合、どこまでを1データだと判定するかが難しく、最後に「|」という文字を追加して判定させました。この文字については登録するカラム「name」に含まれていないような文字を採用すると良いです:information_desk_person_tone1:

control.ctl

LOAD DATA
INFILE 'name.csv' "STR '|'"
INTO TABLE m_name
FIELDS TERMINATED BY ',' OPTIONAL ENCLOSED BY '"'
(
    id CHAR(12),
    name CHAR(300)
)

②CSVファイルの用意

name.csv

1,サンプル1。
サンプル1。|
2,サンプル2。|

つづいて、用意したデータを追加していきます:sparkles:

③文字コードを指定

コマンドプロンプトにて実行をしていきます

1.コメントプロンプトの文字エンコーディングをUTF-8に指定

chcp 65001 

2.Oracleクライアントのセッションロケール情報を日本語、エンコーディングをUTF-8に指定

set NLS_LANG=Japanese_Japan.UTF8

④作成したコードを実行

作成したファイルが置いてあるディレクトリに移動して実行します

sqlldr userid/password@//ホスト名:ポート番号/サービス名 control=control_file.ctl log=log_file.log
  • userid/password:データベースのユーザー名とパスワード
  • control:制御ファイルのパス
  • log:ログファイルのパス

さいごに

初のSQL*Loaderで苦戦しましたが、苦労の末無事にデータ追加ができました!
上記、参考になれば幸いです:hatched_chick:

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?