SQL*Loader
業務で大量データをテーブルに投入する必要がありSQL*Loaderを使った。その際に調べた内容を備忘録として残しておきます。
SQLLoaderとは?
固定長やCSV形式の外部ファイルからOracleデータベースにロードするユーティリティ。制御ファイルで指定した内容をもとにデータファイルのデータをデータベースに格納する。
- データファイル
- ロードするデータを保持するファイル。固定長やCSV形式等を指定することができる。
- 制御ファイル
- データファイルの場所やデータの解釈方法などロードに必要な制御情報を保持するファイル
- ログファイル
- ロード件数やエラーログなどが記録される。
- 不良ファイル
- エラーによりロードされなかったレコードが記録される
- 廃棄ファイル
- エラー以外の理由でロードされなかったレコードが記録される
制御ファイル記述例
- サンプルテーブル
CREATE TABLE EMP ( EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2), CONSTRAINT PK_EMP PRIMARY KEY(EMPNO) ) /
- CSVファイル
1,101,10,,20100101,10000,10,10 2,102,10,,20100101,10001,10,20 3,103,10,,20100101,10002,10,30 4,104,10,,20100101,10003,10,40 5,105,10,,20100101,10004,10,10 6,106,10,,20100101,10005,10,20 7,107,10,,20100101,10006,10,30 8,108,10,,20100101,10007,10,40 9,109,10,,20100101,10008,10,10 ・・・
- 制御ファイル
LOAD DATA INFILE 'C:\DATA.csv' APPEND INTO TABLE EMP FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( empno, ename, job, mgr, hiredate DATE 'YYYYMMDD', sal, comm, deptno )
- INFILE句には、データ・ファイルの名前を指定します。
- BADFILE句には、不良ファイルの名前を指定します。指定しない場合は制御ファイル名.BAD。
- DISCARDFILE句には、破棄ファイルの名前を指定します。指定しない場合は制御ファイル名.DSC。
- INTO TABLE句にははデータをロードするモードを指定する。
- INSERT:表にデータを追加する。ただしテーブルが空でない場合はエラーとなる。
- APPEND:表にデータを追加する。既にデータがある場合、重複しないレコードのみが追加される
- REPLACE:表のデータをすべて入れ替える。
- TRUNCATE:表のデータを切り捨てて追加する。
- FIELDS句には全ての列に対するオプションを指定する
- カンマ区切りの場合:TERMINATED BY ','
- タブ区切りの場合:TERMINATED BY X'09'
- ダブルクォーテーションで囲まれている場合は「OPTIONALLY ENCLOSED BY '"'」を指定する
- データがない場合にNULLを入れるように指定する場合は「TRAILING NULLCOLS」を指定する
- 通常空白文字は切り捨てられるが、これを行わないようにする場合は「PRESERVE BLANKS」を指定する
- 実行
C:\Documents and Settings\Administrator>sqlldr user/passwd@orcl control="C:\DATA.CTL" log="C:\DATA.log" SQL*Loader: Release 11.2.0.1.0 - Production on 月 7月 18 20:07:03 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. コミット・ポイントに達しました。 - 論理レコード件数64 コミット・ポイントに達しました。 - 論理レコード件数128 コミット・ポイントに達しました。 - 論理レコード件数192 コミット・ポイントに達しました。 - 論理レコード件数256 コミット・ポイントに達しました。 - 論理レコード件数320 コミット・ポイントに達しました。 - 論理レコード件数384 コミット・ポイントに達しました。 - 論理レコード件数448 コミット・ポイントに達しました。 - 論理レコード件数512 コミット・ポイントに達しました。 - 論理レコード件数576 コミット・ポイントに達しました。 - 論理レコード件数640 コミット・ポイントに達しました。 - 論理レコード件数704 コミット・ポイントに達しました。 - 論理レコード件数768 コミット・ポイントに達しました。 - 論理レコード件数832 コミット・ポイントに達しました。 - 論理レコード件数896 コミット・ポイントに達しました。 - 論理レコード件数960 コミット・ポイントに達しました。 - 論理レコード件数1000 C:\Documents and Settings\Administrator>
X06HTの電池パック無料サービス申し込みました
X06HTを購入してから1年間ずっとあんしん保証パックに入っていたので、電池パック無料サービスを申し込みました。
申し込み方法が分からなかったので調べたところ、ここに書いてありました。
それによると3種類の申し込み方法があるようです。
- 電話(157)
- オンラインショップ(http://onlineshop.mb.softbank.jp/ols/html/service/denchi.html)
- ソフトバンクショップ
私はオンラインショップで申し込みましたが、在庫不足で納期は6月下旬になるようです。
対話形式でプロジェクトの雛形を作成する方法の覚書
プロジェクトを作成するには次のコマンドを実行します。
mvn archetype:generate
生成したいarchetypeの番号を入力します。
Choose a number: (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41) 15: :
選択できるarchetypeは以下のように41種類準備されているようです。
1 | appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF) | |
---|---|---|
2 | appfuse-basic-spring (AppFuse archetype for creating a web application with Hibernate, Spring and Spring MVC) | |
3 | appfuse-basic-struts (AppFuse archetype for creating a web application with Hibernate, Spring and Struts 2) | |
4 | appfuse-basic-tapestry (AppFuse archetype for creating a web application with Hibernate, Spring and Tapestry 4) | |
5 | appfuse-core (AppFuse archetype for creating a jar application with Hibernate and Spring and XFire) | |
6 | appfuse-modular-jsf (AppFuse archetype for creating a modular application with Hibernate, Spring and JSF) | |
7 | appfuse-modular-spring (AppFuse archetype for creating a modular application with Hibernate, Spring and Spring MVC) | |
8 | appfuse-modular-struts (AppFuse archetype for creating a modular application with Hibernate, Spring and Struts 2) | |
9 | appfuse-modular-tapestry (AppFuse archetype for creating a modular application with Hibernate, Spring and Tapestry 4) | |
10 | maven-archetype-j2ee-simple (A simple J2EE Java application) | |
11 | maven-archetype-marmalade-mojo (A Maven plugin development project using marmalade) | |
12 | maven-archetype-mojo (A Maven Java plugin development project) | |
13 | maven-archetype-portlet (A simple portlet application) | |
14 | maven-archetype-profiles () | |
15 | maven-archetype-quickstart () | |
16 | maven-archetype-site-simple (A simple site generation project) | |
17 | maven-archetype-site (A more complex site project) | |
18 | maven-archetype-webapp (A simple Java web application) | |
19 | jini-service-archetype (Archetype for Jini service project creation) | |
20 | softeu-archetype-seam (JSF+Facelets+Seam Archetype) | |
21 | softeu-archetype-seam-simple (JSF+Facelets+Seam (no persistence) Archetype) | |
22 | softeu-archetype-jsf (JSF+Facelets Archetype) | |
23 | jpa-maven-archetype (JPA application) | |
24 | spring-osgi-bundle-archetype (Spring-OSGi archetype) | |
25 | confluence-plugin-archetype (Atlassian Confluence plugin archetype) | |
26 | jira-plugin-archetype (Atlassian JIRA plugin archetype) | |
27 | maven-archetype-har (Hibernate Archive) | |
28 | maven-archetype-sar (JBoss Service Archive) | |
29 | wicket-archetype-quickstart (A simple Apache Wicket project) | |
30 | scala-archetype-simple (A simple scala project) | |
31 | lift-archetype-blank (A blank/empty liftweb project) | |
32 | lift-archetype-basic (The basic (liftweb) project) | |
33 | cocoon-22-archetype-block-plain (http://cocoon.apache.org/2.2/maven-plugins/) | |
34 | cocoon-22-archetype-block (http://cocoon.apache.org/2.2/maven-plugins/) | |
35 | cocoon-22-archetype-webapp (http://cocoon.apache.org/2.2/maven-plugins/) | |
36 | myfaces-archetype-helloworld (A simple archetype using MyFaces) | |
37 | myfaces-archetype-helloworld-facelets (A simple archetype using MyFaces and facelets) | |
38 | myfaces-archetype-trinidad (A simple archetype using Myfaces and Trinidad) | |
39 | myfaces-archetype-jsfcomponents (A simple archetype for create custom JSF components using MyFaces) | |
40 | gmaven-archetype-basic (Groovy basic archetype) | |
41 | gmaven-archetype-mojo (Groovy mojo archetype) |
groupIdを指定します。
ここにはプロジェクトのルートパッケージ名を指定します。
Define value for groupId: : com.example
artifactIdを指定します。
ここにはプロジェクト名を入力します。
Define value for artifactId: : app
バージョンを指定します。
Define value for version: 1.0-SNAPSHOT: :
パッケージを指定します。
Define value for package: com.example: :
以上でプロジェクトの雛形が作成されます。
Eclipseプロジェクトに変換する手順についての覚書
M2_REPO の設定
MavenのローカルリポジトリのパスをEclipseに教えてあげます。
Eclipseのワークスペースに移動し以下のコマンドを実行。
mvn eclipse:add-maven-repo -Declipse.workspace=.
Eclipseのビルドパス変数に「M2_REPO」が追加されます。
プロジェクトソースをダウンロード
svn co リポジトリパス
build.xml
Antではbuild.xmlというXMLファイルを使って、antの動作を制御します。ここではbuild.xmlファイルの基本的な使い方と実行方法について確認していきます。
ビルドファイルの構成
project要素
projectはビルドファイルのルート要素でビルドに関する情報を記述します。projectには次の3つの属性があります。
属性 | 説明 | 必須 |
---|---|---|
name | projectの名前 | |
default | ターゲットが指定されない時に使用するデフォルトターゲット | ○ |
basedir | パスの計算を行う場合に用いるベースディレクトリ |
target要素
projectには一つ以上のターゲットを定義します。一つのtargetは実行したいtaskの集合です。
属性 | 説明 | 必須 |
---|---|---|
name | ターゲットの名前 | ○ |
depends | このターゲットが依存するターゲット名のリスト(カンマ区切り) | |
if | このターゲットを実行するために設定されていなければならないプロパティ名 | |
unless | このターゲットを実行するために設定されていてはならないプロパティ名 | |
description | このターゲットの機能の簡単な説明 |
task要素
taskとは実行可能なコードのひとまとまりです。
taskは、次のような共通の構造になっています
<名前 属性1="値1" 属性2="値2" ... />
Antで用意されているTaskはユーザマニュアルに記載されており、何かの処理を行い時は以下よりタスクを探すこととなります。
property要素
プロジェクトには、複数のプロパティを設定することができます。プロパティは名前と値からなり、タスクの中において、属性の値を設定する場所に "${" と "}" で挟んでプロパティ名を書くことにより、属性の値として使用することができます。
Antの実行について
Antを実行するには単にantと入力するだけです。引数が指定されなかった場合はカレントディレクトリの build.xmlファイルを探しprojectタグのdefault 属性で指定されたターゲットを実行します。
ant
build.xmlでないビルドファイルを使うには以下のようにビルドファイルを指定します。
ant -buildfile file
find [file]オプションを使った場合、カレントディレクトリでビルドファイルを探し次に親ディレクトリで探し、順次その上をビルドファイルが見つかるかファイルシステムのルートに到達するまで探します。デフォルトではbuild.xmlという名前のビルドファイルが検索されます。build.xml以外のビルドファイルを探させる場合にはファイル引数を指定します。
ant -find [file]
Dproperty=valueオプションを使用することでプロパティを設定することができます。プロパティはビルドファイルから${property}としてアクセスできます。
ant -Dproperty=value