Skip to content
hyukke edited this page May 26, 2016 · 5 revisions

Oracle Database

Description

Oracle 社が提供するリレーショナルデータベース管理システム。

Usage

SQL

DDL

TRUNCATE - 表を切り捨て
> truncate table SAMPLE;

DML

SELECT - レコードを抽出
> select SAMPLE_ID, SAMPLE_NAME from SAMPLE where SAMPLE_ID = 1;
INSERT - レコードを挿入
> insert into SAMPLE (SAMPLE_NAME, SAMPLE_TYPE) values ('Sample Record', 'TYPE_A');
  • insert into SAMPLE values ('Sample Record', 'TYPE_A') カラムは省略可能

  • 別テーブルからSELECTしたレコードを挿入することも可能

insert into SAMPLE (SAMPLE_NAME, SAMPLE_TYPE) select ANOTHER_SAMPLE_NAME as SAMPLE, ANOTHER_SAMPLE_TYPE as SAMPLE_TYPE from ANOTHER_SAMPLE ```

UPDATE - レコードを更新
> update SAMPLE set SAMPLE_TYPE = 'TYPE_B' where SAMPLE_ID = 1; 
  • 複数のテーブルを連結した更新は不可
DELETE - レコードを削除
> delete from SAMPLE where SAMPLE_ID = 1;

Tools

SQL*Plus

コマンドラインでデータベースにアクセスできる。
以下のコマンドで SQL*Plus を起動する。

C:\> sqlplus username/password@XE
  • username/password@//ip:port/connection-string 左記の順で接続情報を指定(@以降はローカル環境であれば省略可)
    • username ユーザ名
    • password パスワード
    • ip IP アドレス
    • port ポート
    • connection-string 接続文字列

SQL*Loader

一定の書式でテキストファイルに記述された大量のデータを、高速にデータベースに取り込むことができる。
データを記述したファイルと、それに合わせた制御ファイルを作成する。

-- 制御ファイル sample.ctl
LOAD DATA
CHARACTERSET 'JA16SJISTILDE'
INFILE 'sample.csv'
TRANCATE INTO TABLE SAMPLE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (
    SAMPLE_ID,
    SAMPLE_NAME,
    SAMPLE_TYPE
)

コマンドラインから、制御ファイルやオプションを指定して、 SQL*Loader を起動する。

C:\> sqlldr username/password control=sample.ctl log=sample.log skip=1 errors=10000000 direct=y
  • username/password@//ip:port/connection-string 左記の順で接続情報を指定(@以降はローカル環境であれば省略可)
    • username ユーザ名
    • password パスワード
    • ip IP アドレス
    • port ポート
    • connection-string 接続文字列
  • control 制御ファイルパスおよびファイル名
  • log ログファイルパスおよびファイル名
  • skip テキストデータの先頭から読み飛ばす行数
  • errors 読み込み時にエラーが発生した際に中断するまでの件数
Including options

オプションは、制御ファイルに含めることができる。

OPTIONS (
    ERRORS=10000000,
    SKIP=1,
    LOG='sample.log',
    direct=y
)
LOAD DATA
CHARACTERSET 'JA16SJISTILDE'
INFILE 'sample.csv'
TRANCATE INTO TABLE SAMPLE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (
    SAMPLE_ID,
    SAMPLE_NAME,
    SAMPLE_TYPE
)

コマンドラインでは、制御ファイルのみ指定する。

C:\> sqlldr username/password control=sample.ctl
Convert date and time

日付形式を変換してロードする場合は、制御ファイルのカラム定義にTO_DATE関数を指定する。

-- ~ ~ ~ 省略
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (
    SAMPLE_ID,
    SAMPLE_NAME,
    SAMPLE_TYPE,
    SAMPLE_DATETIME "TO_DATE(:SAMPLE_DATE, 'yyyy/MM/dd HH24/MI:SS')"
)

SQL File execution

SQL ファイルに@を付与して実行すると、ファイル内の SQL をまとめて実行することができる。

> @sample.sql

Reference