bdu
説明
バルク データ ユーティリティ(BDU)はコマンド ライン ユーティリティで、区切り文字付きテキスト ファイルのデータを PSQL テーブルに読み込むことができます。テーブルおよびデータベースは既に存在している必要があります。
BDU、テーブル、データベースおよび PSQL データベース エンジンはすべて同じコンピューター上に存在する必要があります。区切り文字付きテキスト ファイルは、ローカル ドライブ、マップ ドライブ、マウントされたフォルダーまたは共有フォルダーの中でデータベース エンジンがローカルにアクセス可能である必要があります。
デフォルトの区切り文字を使うこともできますし、ユーザー指定の区切り文字を使用することもできます。区切り文字に使用する文字がデータ自体に含まれていてはいけません。次の表は許可されている区切り文字の一覧です。
\t(デフォルト)
 
メモ: PSQL では、ヌル終端文字(\0)や二重引用符(")は列の区切り文字として使用できません。
 
\n(デフォルト)
\r
\r\n
BDU では、一重引用符(')および二重引用符(")のみがテキストの囲み文字として使用できます。データ ファイルには、一重引用符または二重引用符で囲まれた列値を含むことができます。たとえば、"Fred"\t"22"\t"2459"\t"Sales"\t という列値は二重引用符で囲まれ、タブ文字で区切られています。
BDU は、連続した区切り文字をヌル値として扱います。ユーティリティは、連続した列区切り文字を検出すると列にヌル値を挿入し、その列をヌル値許可とします。
ヌル値には囲み文字は使用できません。次の列データでは、2 番目の列にヌル値を挿入します。この列には囲み文字が使用されていないことに注意してください。
"Fred"\t\t"2459"\t"Sales"\t
概要
bdu {database_name} {table_name} {data_file}
[-<e|E> max_errors]
[-<r|R> reject_file]
[-<f|F> first_row]
[-<l|L> last_row]
[-<t|T> field_term]
[-<n|N> row_term]
[-<o|O> output_file]
[{-<u|U> login_id} {-<p|P> password}]
[-<c|C> encoding]
[-<h|H>]
メモ: BDU を使用してセキュリティが設定されているデータベース(Btrieve セキュリティ ポリシーが[混合]に設定されている)にデータを読み込む場合、提供される資格情報(ユーザー名およびパスワード)が PSQL データベースのユーザー アカウントおよびシステムのユーザー アカウントと一致する必要があります。
パラメーター
 
-<e|E> max_errors
-<r|R> reject_file
-<f|F> first_row
-<l|L> last_row
-<t|T> field_term
-<n|N> row_term
-<o|O> output_file
-<u|U> login_id
-<p|P> password
-<c|C> encoding
encoding に対して有効な値は次のとおりです。
encoding パラメーターでは、大文字と小文字が区別されず、引用符も必要ありません。を参照してください。
メモ:データ ファイルに BOM(バイト オーダー マーク)が含まれている場合、BDU はその BOM で指定されたエンコードを用います。つまり、コマンド ラインでencoding パラメーターの値を指定したとしても、データ ファイルで BOM を使用して UTF-8、UTF-16LE、または UTF-16BE のエンコードを示していた場合は、BDU はそのエンコードを優先して使用します。
encoding パラメーターに対して不正な値を入力した場合には、"コマンド ライン引数 -c (ファイル エンコード) の値が無効です。" というメッセージが返されます。
注記
各種設定
BDU を使用するのに PSQL 設定パラメーターを変更する必要はありません。
BDU はアクセラレイティド モードを使用してデータをテーブルに読み込みます。データの読み込み中、MicroKernel はトランザクション ログを実行しません。
アーカイブ ログを使用している場合は、データ ファイルを再度バックアップします。
エラー ログ
デフォルトで、BDU はすべての情報とエラー メッセージを標準エラー ストリーム(stderr)に記録します。ユーティリティが情報またはエラー メッセージを書き込むログ ファイルを指定することができます。
重大なエラーと回復可能なエラーの 2 種類は記録されません。重大なエラーが起きた場合、BDU はエラーからの復旧を行うことができないため、終了します。たとえば、区切り文字の欠落したデータ ファイルは重大なエラーです。
回復可能なエラーが起きた場合、BDU はエラーをスキップして処理を継続します。ユーティリティは、スキップしたエラーの回数を保持していて、ユーザーが指定したスレッショルドに達すると終了します。デフォルトで、スレッショルドにはゼロが設定されています。
制約
BDU を使用してデータを読み込む際には、以下の制約が適用されます。
1 テーブルの作成中または更新中に定義した列のデフォルト値は、BDU によって認識されていないためです。
最良実施例
可能であれば、データベース読み込みが最小のとき、または、読み込み中のテーブルに同時セッションが存在しないときに BDU を実行してください。
読み込み中のテーブルにインデックスが含まれている場合は、BDU を使用する前にインデックスを削除します。読み込みの完了後インデックスを再作成します。
読み込み中のテーブルに CHECK 制約がかけられている列がある場合は、BDU を使用する前に CHECK 制約を削除してください。読み込み完了後に制約を再指定します。
サンプル ソース ファイル
以下のデータ内容を使用して、サンプルの文字区切りテキスト ファイルが作成されています。使用例を検証するのに、このファイルを使用することができます。例では、このファイルを data_file.txt として使用しています。
以下のデータ内容はカンマ区切りになっているため、BDU では -t パラメーターを指定する必要があることに注意してください。-t パラメーターは、タブ文字以外の区切り文字では必須です。
psqlBDUsample_1,12345,psql,101,18446744073709551615
psqlBDUsample_2,12346,psql,102,18446744073709551614
psqlBDUsample_3,12347,psql,103,18446744073709551613
psqlBDUsample_4,12348,psql,104,18446744073709551612
psqlBDUsample_5,12349,psql,105,18446744073709551611
psqlBDUsample_6,12350,psql,106,18446744073709551610
psqlBDUsample_7,12351,psql,107,18446744073709551609
psqlBDUsample_8,12352,psql,108,18446744073709551608
psqlBDUsample_9,12353,psql,109,18446744073709551607
psqlBDUsample10,12354,psql,110,18446744073709551606
ソースの入力として使用されるデータ ファイルは、データ値を引用符で囲んだ場合でも、列の区切り文字とデータ値の間に空白を含めてはいけません。
以下の例では、BDU_Table という名前のテーブルが Demodata サンプル データベースに含まれているものと仮定しています。Demodata にこのようなテーブルを追加するには、次のクエリを使用します。
CREATE TABLE BDU_Table (Name CHAR(20) NOT NULL CASE, PhoneNo INTEGER,BuildingName CHAR(25) NOT NULL CASE, RoomNo UINT NOT NULL,HeadOfDept UBIGINT NOT NULL)
BDU をデフォルトのオプションで実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt
メモ: 入力データはタブ区切りで、デフォルトのオプションを使用する必要があります。入力データがタブ区切りでない場合は、-t パラメーターを使用して区切り文字を指定する必要があります。

たとえば、カンマ区切りになっている
のデータを使用する場合、次のように BDU を実行します。

bdu demodata BDU_Table C:\data_file.txt -t ,
============ 
サンプル データベースの DEMODATA の Billing テーブルを対象に、タブ区切りデータを含むファイルを読み込むために DBU を実行するには次のように記述します。このファイルでは UTF-16LE エンコードを使用します。
bdu demodata Billing D:\billing_data_import.txt -c UTF-16LE
============ 
ユーザー名とパスワードを必要とするデータベースで BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -u <ユーザー名> -p <パスワード>
============ 
最大のエラー数オプションを使用して BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -e <ユーザーが許可するエラーの数>
たとえば、エラーが 100 個続くまで読み込むには、次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -e 100
============ 
特定の列区切り文字オプションを使用して BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -t <列区切り文字>
たとえば、ソース ファイルに、各行を分離するテキストが含まれる場合は次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -t ,
============ 
特定の行区切り文字オプションを使用して BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -n <行区切り文字>
たとえば、ソース ファイルに各行が \n で分離されるテキストを含まれている場合は、次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -n \n
============ 
特定の開始行オプションを使用して BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -f <読み込みを開始する行番号>
============ 
特定の行終端オプションを使用して BDU を実行するには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -l <読み込みを終了する行番号>
============ 
パラメーターは組み合わせて使用することができます。|で区切られ、' で囲まれたデータを含むソース ファイルの先頭 15 行を読み込むには次のように記述します。
bdu demodata BDU_Table C:\data_file.txt -f 1 -l 15 -t |