About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

概要

S2JDBC-Genでは、いくつかの種類のファイルを扱いますが、それらのファイルは決められた形式でなければいけません。

ここでは、ファイルごとの形式について説明します。

SQLファイル

SQLファイルはGen-Ddl タスクで生成されます。

生成されたSQLファイルや独自に作成したSQLファイルは、 Exec-Sql タスクや Migrate タスクで実行できます。

1つのSQLファイルには、複数のSQLステートメントやSQLブロックを記述できます。

SQLファイルの名前

ファイル名に制限はありません。

拡張子は.sqlもしくは.ddlでなければいけません。

SQLファイルのデータ

SQLファイルは次のように記述できます。

/*
 * テーブル定義(SQLステートメント)
 */
create table EMPLOYEE (
  ID numeric(5) primary key,  -- 識別子
  NAME varchar2(20)           -- 名前
);

/*
 * データの追加(SQLステートメント)
 */
insert into EMPLOYEE (ID, NAME) values (1, 'SMITH');

/*
 * プロシージャー定義(SQLブロック)
 */
create or replace procedure proc 
( cur out sys_refcursor, 
  employeeid in numeric
) as
begin
  open cur for select * from employee where id > employeeid order by id; 
end proc_resultset;
/

コメントは1行コメント(--)とブロックコメント(/* */)の2種類が使用できます。 コメントは取り除かれてデータベースへ発行されます。

1つのSQLステートメントは複数行に分けて記述できます。 ステートメントは各タスクのstatementDelimiter属性に指定した値で区切る必要があります。 この例では「;」が使用されています。 改行はステートメントの区切りとはみなされません。

ストアドプロシージャーなどのSQLブロックは、各タスクのblockDelimiter属性に指定した値で区切る必要があります。 この例では「/」が使用されています。 区切り文字は行頭に記述し、区切り文字の後ろには何も記述しないようにしてください。 つまり、区切り文字だけの行としなければいけません。 SQLブロックの中では、statementDelimiter属性に指定した値を使用してもSQLが区切られません。

ダンプファイル

データベースのデータはGen-Ddl タスクや Dump-Data タスクによりCSV形式でダンプされます。

ダンプファイルは、 Migrate タスクやLoad-Data タスクでロードできます。

1つのダンプファイルには、1つのテーブルに対応するデータが含まれます。

ダンプファイルの名前

ダンプファイルの名前は、カタログ名、スキーマ名、テーブル名の情報を含んだものになります。 したがって、カタログ名、スキーマ名、テーブル名を定義する際には、ファイルシステムで使用できない文字を含まないように注意してください。

拡張子は.csvでなければいけません。

ダンプファイルのデータ

データは次のようになります。

"ID","DEPT_NO","DEPT_NAME","LOC","VERSION_NO"
"1","10","ACCOUNTING","NEW YORK","1"
"2","20","RESEARCH","DALLAS","1"
"3","30","SALES","CHICAGO","1"
"4","40","OPERATIONS","BOSTON","1"

これは、DEPARTMENTテーブルのデータをダンプ出力したものです。

最初の1行目はテーブルのカラムを表すヘッダー行になります。 ヘッダー行は必須です。 2行目以降がデータ行になります。 データ行の列数はヘッダー行と同じでなければいけません。

null以外のすべてのデータはダブルクォテーションで囲むことができます。 Gen-Ddl タスクや Dump-Data タスクは上記の例のように必ずすべてのデータをダブルクォテーションで囲んで出力します。

nullと空文字の表現方法は異なります。nullは長さが0のデータです。 例えば、次のデータは、DEPT_NAMEがnullであることを表します。

"ID","DEPT_NO","DEPT_NAME","LOC","VERSION_NO"
"1","10",,"NEW YORK","1"

空文字は長さ0のデータをダブルクォテーションで囲んだものです。 例えば、次のデータは、DEPT_NAMEが空文字であることを表します。

"ID","DEPT_NO","DEPT_NAME","LOC","VERSION_NO"
"1","10","","NEW YORK","1"

カンマで区切られたデータごとの形式は、対応するエンティティのプロパティの型により決まります。

プロパティの型 データの形式
String、char/Character 文字列表現です。ただし、ダブルクォテーション、カンマ、改行コードのいずれかを含む場合は、文字列全体をダブルクォテーションで囲む必要があります。そのとき、データとしてのダブルクォテーションはダブルクォテーションを2重にすることでエスケープしなければいけません。空文字は、ダブルクォテーションで囲む必要があります。
@Temporal(TemporalType.DATE)が指定されたjava.util.Date、@Temporal(TemporalType.DATE)が指定されたjava.util.Calendar、java.sql.Date yyyy/MM/ddの形式でなければいけません。
@Temporal(TemporalType.TIME)が指定されたjava.util.Date、@Temporal(TemporalType.TIME)が指定されたjava.util.Calendar、java.sql.Time hh:mm:ssの形式でなければいけません。
@Temporal(TemporalType.TIMESTAMP)が指定されたjava.util.Date、@Temporal(TemporalType.TIMESTAMP)が指定されたjava.util.Calendar、java.sql.Timestamp yyyy/MM/dd hh:mm:ss.fffffffffの形式でなければいけません。ただし、.fffffffffについてはなくてもかまいません。
byte[]、Serializable Base64でエンコードされた形式で表現されます。
Enum型 S2JDBCで永続化される際に使用される値(列挙の順序もしくは名前)の文字列表現です。
その他の型 文字列表現です。

データを編集する際は、上述の形式に従ってください。 編集にはCSVエディタを利用することを推奨します。 CSVエディタについてはセットアップのCSVエディタ を参照してください。