SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILEシステム手続きを使って表にある列にインポートすることができます。このときLOBのデータは別ファイルから分けてインポートされます。
主となるインポートファイルには、LOBの情報がある場所への参照と他の全データが置かれます。
構文
SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILE (
IN SCHEMANAME VARCHAR(128),
IN TABLENAME VARCHAR(128),
IN INSERTCOLUMNS VARCHAR(32672),
IN COLUMNINDEXES VARCHAR(32672),
IN FILENAME VARCHAR(32672),
IN COLUMNDELIMITER CHAR(1),
IN CHARACTERDELIMITER CHAR(1),
IN CODESET VARCHAR(128),
IN REPLACE SMALLINT)
)
インポートユーティリティはLOBの情報がある場所への参照を主となるインポートファイルから探します。
- SCHEMANAME
- 表のスキーマを指定します。既定のスキーマ名を利用するために、NULLの値を指定することができます。
SCHEMANAMEパラメータは、VARCHAR (128)型の引数を入力にとります。
- TABLENAME
- 情報がインポートされる表の名前を指定します。
表はシステム表や一時表であってはなりません。
文字列は表名と大文字小文字が一致していなければなりません。NULL値を指定するとエラーとなります。
TABLENAMEパラメータは、VARCHAR (128)型の引数を入力にとります。
- INSERTCOLUMNS
- 情報がインポートされる表の列の名前を、コンマで区切って指定します。
表の全列へインポートする場合、NULL値を指定することができます。
INSERTCOLUMNSパラメータは、VARCHAR (32672)型の引数を入力にとります。
- COLUMNINDEXES
- 入力される情報のうち、インポートされる欄の列番号(1から数えます。)をコンマで区切って指定します。
ファイルの全欄を指定する場合、NULL値を指定することもできます。COLUMNINDEXESパラメータは、VARCHAR (32762)型の引数を入力にとります。
- FILENAME
- インポートする情報のあるファイルの名前を指定します。パスが省略された場合、現在の作業ディレクトリが使われます。ネットワークサーバで利用する場合、ファイルの位置はサーバサイドの位置を参照します。
NULLを指定するとエラーになります。
fileNameパラメータは、VARCHAR (32672)型の引数を入力にとります。
- COLUMNDELIMITER
- 列のデリミタを指定します。指定された文字はコンマの代わりに列の終わりを表します。既定値のコンマを利用する場合、NULL値を指定できます。
COLUMNDELIMITERパラメータは、CHAR (1)型の引数を入力にとります。
- CHARACTERDELIMITER
- 文字のデリミタを指定します。指定された文字は二重引用符の代わりに列の終わりを表します。既定値の二重引用符を利用する場合、NULL値を指定できます。
CHARACTERDELIMITERパラメータは、
CHAR (1)型の引数を入力にとります。
- CODESET
- 入力ファイル中の情報のコードセットを指定します。コードセットの名前はJavaで利用可能な文字円コーディングでなければなりません。
情報は指定されたコードセットから、データベースのコードセット(UTF-8)へと変換されます。
実行するJVMと同じコードセットでデータファイルを解釈する場合、NULL値を指定することができます。
CODESETパラメータは、VARCHAR (128)データ型を入力にとります。
- REPLACE
- このパラメータに0以外の値を指定すると、インポートがREPLACEモードで行われます。一方で0を指定すると、インポートはINSERTモードで行われます。
REPLACEモードでは表にある既存の情報はすべて切り捨てられたのち、インポートした情報が挿入されます。
表の定義や索引の定義には変更がありません。表が既にある場合のみ、REPLACEモードで情報をインポートすることができます。INSERTモードでは既存の表の情報に変更を加えずに、インポートした情報を追加します。
パラメータにNULL値を指定するとエラーが発生します。
REPLACEパラメータは、SMALLINTデータ型を入力にとります。
デリミトされない識別子でスキーマ、表、列が作成された場合、インポートの手続きに渡す名前はすべて大文字でなければなりません。
デリミトされた識別子でスキーマ、表、列が作成された場合、インポートの手続きに渡す名前は作成された名前と大文字と小文字が一致しなければなりません。
使い方
この手続きは主となるインポートファイルに書かれた参照を使って、LOBの情報を読みます。
主となるインポートファイルに書かれたLOBへの参照は、lobsFileName.Offset.length/という書式に決まっています。
- Offsetは外部ファイル中のバイト数で数えた位置です。
- lengthはバイト数で数えたLOB列の情報の長さです。
この手続きの使い方については、Derby ツールとユーティリティーガイドの「バルクインポートとエクスポートの手続きを使う」の章も参照してください。
指定した列にデータをインポートする例。LOBデータは別ファイルからインポートされる。
以下の例では、STAFF表のいくつかの列に情報をインポートする方法を示します。
STAFF表にはサンプルデータベースのLOB列があります。
インポートファイルの
staff.delは、デリミトされたデータファイルです。
staff.delファイルには、LOBデータの書かれた外部ファイルへの参照が書かれます。
入力ファイルの情報は、文字のデリミタが二重引用符(")、列のデリミタがコンマ(')という書式となっています。
インポートした情報はSTAFF表の既存の情報に追加されます。
CALL SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILE
(null, 'STAFF', 'NAME,DEPT,SALARY,PICTURE', '2,3,4,6',
+ 'c:\data\staff.del', ',','"','UTF-8', 0);