SQLの勉強をしているわけだが、その教科書「完全合格 OracleMaster 12c SQL基礎 Bronze」 発行:株式会社KADOKAWA)に付属する教材に誤りがあって手こずってしまった。誤りというのはデータに存在している列が定義されているテーブルに存在しないというものであった。何回か見直した気がしたのだがテーブルを作るスクリプトのデータ定義自体に誤りがあるというのは盲点だった。
EMPLOYEES.CSVのデータ
EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISION_PCT,MANAGER_ID,DEPARTMENT_ID
EMPLOYEES表の定義
CREATE TABLE employees (
employee_id NUMBER(6) NOT NULL,
first_name VARCHAR2(20),
last_name VARCHAR2(25) NOT NULL,←このあとにPHONE_NUMBER,が足りない
email VARCHAR2(25) NOT NULL,
hire_date DATE NOT NULL,
job_id VARCHAR2(10) NOT NULL,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4)
);
作ったコントロールファイル
OPTIONS(LOAD=22,SKIP=0,ERRORS=-1,ROWS=22)
LOAD DATA
INFILE 'employees.csv'
BADFILE 'employees.bad'
APPEND
PRESERVE BLANKS
INTO TABLE EMPLOYEES
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
employee_id,
first_name,
last_name,
email,
PHONE_NUMBER,
hire_date,
job_id,
salary,
commission_pct,
manager_id,
department_id
)
自分で勝手に表の定義を作ってコントロールファイルを作ってSQL*Loaderでデータを読み込み、Oracleにテーブルを作ったのだがコントロールファイルやバッチファイルぐらい最初からついていたって良いじゃないかと私は感じた。連絡すると修正したデータが公開されるかもしれないし公開されないかもしれない。言ったほうが親切かもしれないと思っているが今だにすべてのテーブルをロードしたわけではないので少し迷っている。