2022/11/15 TechnoStyle

svTreeDB 仕様

svTreeDBはコンソールアプリケーションです。コンソールアプリケーションは、eDocArrangementのコマンド実行から呼び出すことが可能です。

CSVファイルをコマンドひとつでデータベースにインポートできます。インポートしたデータは条件をを指定して必要なデータのみをCSVファイルに出力できます。

マスターデータなどをデータベースにインポートして、キーを指定して特定のデータを検索・取り出しするような処理が簡単に行えます。

使用方法

書式 (insert)

svTreeDB.exe -c insert -isv 入力区切り値ファイル名 -odb 出力データベースファイル名 [-svf "区切り値ファイルフォーマット"] [-svd "区切り値ファイルフォーマット区切り文字"] [-sve "区切り値ファイルフォーマットエスケープ"] [-encoding "エンコーディング情報"] [-tl "タイトル行"] [-dsl "データ開始行"] [-rnsf1] [-dnier] [-limit "リミット情報" ...] [-ifnl "項目番号" ...] [-efl "項目名" "正規表現" ...] [-enfl "項目名" "正規表現" ...] [-set "項目名" "値" ...] [-setex "拡張セット情報" ...] [-st "項目名" "タイトル名" ...] [-primarykey "項目名" ...] [-numeric "項目名" ...] [-noduplication ["重複キーエラーログファイル名"]]

書式 (insert)

svTreeDB.exe -c insert -ivl "値" ... -odb 出力データベースファイル名 [-dnier] [-efl "項目名" "正規表現" ...] [-enfl "項目名" "正規表現" ...] [-primarykey "項目名" ...] [-numeric "項目名" ...] [-noduplication ["重複キーエラーログファイル名"]]

書式 (select)

svTreeDB.exe -c select -idb 入力データベースファイル名 -osv 出力区切り値ファイル名 [-osva] [-osvcz "出力データが0件の時の出力区切り値ファイルの扱い"] [-svf "区切り値ファイルフォーマット"] [-svd "区切り値ファイルフォーマット区切り文字"] [-sve "区切り値ファイルフォーマットエスケープ"] [-encoding "エンコーディング情報"] [-ot] [-orn] [-ofl "項目名" ...] [-where "where情報" "値" ... | -whereinsertdate "日数情報" | -whereupdatedate "日数情報"] [-orderby "order by情報"] [-limit "リミット情報" ...]

書式 (update)

svTreeDB.exe -c update -idb 入力データベースファイル名 [-where "where条件" "値" ... | -whereinsertdate "日数情報" | -whereupdatedate "日数情報"] [-limit "リミット情報" ...] [-set "項目名" "値" ...] [-setex "拡張セット情報" ...] [-st "項目名" "タイトル名" ...]

書式 (delete)

svTreeDB.exe -c delete -idb 入力データベースファイル名 [-where "where条件" "値" ... | -whereinsertdate "日数情報" | -whereupdatedate "日数情報"] [-limit "リミット情報" ...]

コマンドによって引数が異なります。

insert

-c insert 区切り値ファイルを読み込んでデータベースに書き込みます。
-isv "入力区切り値ファイル名" 入力元となる、csvファイルなどの区切り値ファイル名を指定します。
-ivl "値" ...

入力元となる、値リストを指定します。

1回のコマンド実行で1レコードの登録となります。

例)
"値1" "値2" "値3"
-ifnl "項目番号" ...

登録する項目番号リストを指定します。

項目番号は1以上の整数で指定します。

項目名は 1-3 のように範囲を指定する事もできます。

項目名は f1 f2 ... のように自動的に割り振られます。

例)
"2" "3" "4"
"2-4"
-efl "項目名" "正規表現" ...

項目名と値の一部を取り出す正規表現を指定します。

正規表現にマッチした文字列を登録する値として使用します。

正規表現にキャプチャーの ( ) がある場合は、( ) の内容を登録する値として使用します。

例)
"f2" "[\d-]+"
"f3" "コード:([\d-]+)"
-enfl "項目名" "正規表現" ...

項目名と値の一部を取り出す正規表現を指定します。

正規表現にマッチした文字列を新しい項目に登録します。

新しい項目名は c1 c2 ... のように自動的に割り振られます。

正規表現にキャプチャーの ( ) がある場合は、( ) の内容を登録する値として使用します。

例)
"f2" "[\d-]+"
"f3" "コード:([\d-]+)"
-tl "タイトル行"

区切り値ファイルのタイトル行を指定します。

タイトル行を指定すると、タイトル行のデータがデータベースに保存され、select時にタイトル行を出力できます。

データ開始行より小さい値を指定します。

省略した時はタイトル行を保存しません。

-dsl "データ開始行"

区切り値ファイルのデータ開始行を指定します。

区切り値ファイルの1行目がタイトル行で、2行目からデータが始まる時は 2 を指定します。

省略した時は 1 となります。

-rnsf1

区切り値ファイルのデータ開始行を指定した、かつ、新規追加の際に、開始レコード番号を 1 にします。

省略した時の開始レコード番号は、-dsl で指定されたデータ開始行となります。

-dnier

項目の値が全て空のレコードは登録しません。

-odb "出力データベースファイル名"

出力先となる、データベースファイル名を指定します。

存在するデータベースファイル名を指定した時は、データは追加されます。(プライマリーキーの指定により追加と更新を行います)

-primarykey "項目名" ...

プライマリーキーとする項目名を指定します。

insertの際に、プライマリーキーの項目の値が同一のレコードは更新されます。

後述の -noduplication を指定した場合は、insertの際に、プライマリーキーの項目の値が同一のレコードはエラーとなります。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

プライマリーキーの情報はデータベースに記録されます。

プライマリーキーの指定は初回insert時のみ有効です。(2回目以降のinsertでは無視されます)

例)
"f1" "f2"
-numeric "項目名" ...

数値として扱いたい項目名を指定します。

数値項目は、whereでは数値比較、order byでは数値による並び替え、となります。

数値項目として指定しなかった項目は文字列項目となります。

数値項目の情報はデータベースに記録されます。

数値項目の指定は初回insert時のみ有効です。(2回目以降のinsertでは無視されます)

省略した時は、全ての項目が文字列項目となります。

例)
"f2" "f5"
-noduplication ["重複キーエラーログファイル名"]

insertの際に、プライマリーキーの項目の値が同一のレコードを登録しないようにします。

重複キーエラーログファイル名を省略すると、プライマリーキーの項目の値が重複しないレコードのみ登録します。

重複キーエラーログファイル名を指定すると、プライマリーキーの項目の値が重複するレコードをエラーとします。

重複キーエラーとなった区切り値ファイルのレコードの情報を指定された重複キーエラーログファイルに出力します。

1件でも重複キーエラーが発生した場合は、読み込み中の区切り値ファイル全体がデータベースに登録されません。

重複キーエラーが発生しなかった場合は、区切り値ファイルの内容がデータベースに登録されます。重複キーエラーログファイルは0バイトになります。

-primarykey が指定された出力データベースファイルを指定した時のみ有効です。

select

-c select データベースの内容を区切り値ファイルに書き込みます。
-idb "入力データベースファイル名"

出力元となる、データベースファイル名を指定します。

入力データベースファイルが存在しない時は、空の出力区切り値ファイルを出力します。データベースファイルは作成されません。

-ofl "項目名" ...

出力する項目を指定します。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

項目名は f1-f3 のように範囲を指定する事もできます。f1-のように終了項目を省略すると項目の末尾まで出力されます。

オプションスイッチを省略した時は、レコードに含まれる最大項目番号の数分の項目を全て出力します。存在しない項目番号の値は空文字列となります。(カスタム項目は出力されません)

例)
"f3" "f4" "f5"
"f3-f5"
"f1-" "c1"
-ot

先頭にタイトル行を出力します。

-osva を指定した、かつ、出力区切り値ファイルが存在していた時は無視されます。

-orn

出力する項目の先頭にレコード番号を追加します。

レコード番号は論理行番号となります。

データに改行が含まれていても、1行として扱います。

-osv "出力区切り値ファイル名" 出力先となる、csvファイルなどの区切り値ファイル名を指定します。
-osva 出力区切り値ファイルが存在していた時に追加書き込みします。
-osvcz "出力データが0件の時の出力区切り値ファイルの扱い"

出力データが0件の時の出力区切り値ファイルの扱いを指定します。

指定可能な値は以下の通りです。

title タイトル行のみ出力区切り値ファイルに出力します。 (-ot が指定されていない時は、下記の zerobyte の振る舞いとなります)
zerobyte 0バイトの出力区切り値ファイルを出力します。
none 出力区切り値ファイルを出力しません。出力区切り値ファイルが存在する時は削除されます。

-osva が指定されている時は、既存の出力区切り値ファイルを破壊しない振る舞いとなります。

省略した時の出力データが0件の時の出力区切り値ファイルの扱いは title です。

-orderby "order by情報" ...

並び替えを行う項目と並び順のペアを指定します。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

例)
"f1" "desc" "f2" "asc"

update

-c update 条件を指定してデータベースの内容を変更します。
-idb "入力データベースファイル名"

更新対象のデータベースファイル名を指定します。

入力データベースファイルが存在しない時は、何もしません。

delete

-c delete 条件を指定してデータベースの内容を削除します。
-idb "入力データベースファイル名"

削除対象のデータベースファイル名を指定します。

入力データベースファイルが存在しない時は、何もしません。

insert select

-svf "区切り値ファイルフォーマット"

区切り値ファイルのフォーマットを指定します。

指定可能なフォーマットは以下の通りです。

csv カンマ区切りファイル (Excel準拠)
csv_simple カンマ区切りファイル (エスケープ無し)
tsv タブ区切りファイル (エスケープ無し)
plain プレーンテキストファイル (エスケープ無し)

省略した時の区切り値ファイルフォーマットは csv です。

-svd "区切り値ファイルフォーマット区切り文字"

区切り値ファイルの区切り文字を指定します。

区切り文字無指定で1行全体が1項目となります。

-svfよりも優先されます。

-sve "区切り値ファイルフォーマットエスケープ"

区切り値ファイルのエスケープを指定します。

指定可能なエスケープは以下の通りです。

on エスケープ有り (Excel準拠)
off エスケープ無し

-svfよりも優先されます。

-encoding "エンコーディング情報"

区切り値ファイルのエンコーディングを指定します。

指定可能なエンコーディングは以下の何れかです。

shift_jis, utf-8, utf-8wb, utf-16, utf-16be, jis, euc-jp

utf-8 のみBOM無しを指定できます。utf-8 はBOM無し utf-8wb はBOM有りです。utf-16 と utf-16be は常にBOM有りです。

insertの際に省略した時のエンコーディング情報は自動判定となります。

selectの際に省略した時のエンコーディング情報は shift_jis (シフトJIS)です。

select insert update

-set "項目名" "値" ...

変更する項目名と値のペアを指定します。対象レコードに存在しない項目名を指定する事もできます。

insertコマンドでは、csvファイルのレコードを読み込んだ後で、指定の項目名の値を変更します。

selectコマンドでは、SQLのviewの計算式の項目のような振る舞いとなり、区切り値ファイルに出力される値にのみ適用されます。データベースには保存されません。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

例)
"f1" "値1" "f2" "値2" "c1" "値3"
-setex "拡張セット情報" ...

拡張セット情報を指定します。指定の項目の値に対して正規表現による置換や全角半角変換などを実行できます。変換メソッドのタイプによって引数が異なります。

insertコマンドでは、csvファイルのレコードを読み込んだ後で、指定の項目名の値を変更します。

selectコマンドでは、SQLのviewの計算式の項目のような振る舞いとなり、区切り値ファイルに出力される値にのみ適用されます。データベースには保存されません。


正規表現による置換など: "設定項目名" "メソッド名" "対象項目名" "変換元文字列" "変換先文字列"

1つの拡張セット情報は、以下の5つとなります。

設定項目名 文字列処理後の値を設定する項目名又は、カスタム項目名。
メソッド名 以下の何れかを指定します。
replace 文字列置換。
re.replace 正規表現による文字列置換。
re.match 正規表現によるマッチ結果を適用。
対象項目名 文字列処理の元データとなる項目名又は、カスタム項目名。
変換元文字列 メソッド名によって内容が異なります。
replace 置換元文字列。
re.replace 正規表現パターン。
re.match 正規表現パターン。
変換先文字列 メソッド名によって内容が異なります。
replace 置換先文字列。
re.replace 正規表現キャプチャー情報を含む置換先文字列。
re.match 正規表現キャプチャー情報を含む置換先文字列。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

設定項目名に新規の項目を指定する事もできます。

例) f1が「a123」 の場合、c1に「a<<123>>」をセットする。
"c1" "re.replace" "f1" "\d+" "<<$0>>"

キャプチャした文字は、以下の記号で使用することができます。(.NETの正規表現準拠)

$0 正規表現全体。
$1 1番目の()内の正規表現。

全角半角変換など: "設定項目名" "メソッド名" "対象項目名" "引数"

1つの拡張セット情報は、以下の4つとなります。

設定項目名 文字列処理後の値を設定する項目名又は、カスタム項目名。
メソッド名 以下の何れかを指定します。
sc.zenhan全角半角変換。
sc.specchar特殊文字変換。
対象項目名 文字列処理の元データとなる項目名。
引数 メソッド毎に指定できる内容が異なります。| で区切って複数指定できます。
sc.zenhan 半角英字|半角数字|半角記号|半角カタカナ|全角英字|全角数字|全角記号|全角カタカナ|半角英数記号|全角英数記号
sc.specchar ひらがなをカタカナ|カタカナをひらがな|特殊を標準|長音をマイナス

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

設定項目名に新規の項目を指定する事もできます。

例) f1の半角カタカナを全角カタカナに、全角英数記号を半角英数記号に変換してc1にセットする。
"c1" "sc.zenhan" "f1" "全角カタカナ|半角英数記号"

先頭末尾スペース削除など: "設定項目名" "メソッド名" "対象項目名"

1つの拡張セット情報は、以下の3つとなります。

設定項目名 文字列処理後の値を設定する項目名又は、カスタム項目名。
メソッド名 以下の何れかを指定します。
trim先頭末尾スペース削除。
対象項目名 文字列処理の元データとなる項目名。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

設定項目名に新規の項目を指定する事もできます。

例) f1の先頭と末尾の半角スペースと全角スペースを削除してc1にセットする。
"c1" "trim" "f1"

文字列フォーマットなど: "設定項目名" "メソッド名" "フォーマット文字列"

1つの拡張セット情報は、以下の3つとなります。

設定項目名 文字列処理後の値を設定する項目名又は、カスタム項目名。
メソッド名 以下の何れかを指定します。
fs.field項目値展開用フォーマット。
フォーマット文字列 展開する項目名を含む文字列。 (項目の値を展開するには {f1} のように、項目名を { } で括ります)

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

設定項目名に新規の項目を指定する事もできます。

例) f1の値とf2の値を - で連結した文字列をc1にセットする。
"c1" "fs.field" "{f1}-{f2}"
-st "項目名" "タイトル名" ...

項目名とタイトル名のペアを指定します。

insertコマンドで -isv オプションと -tl オプションを指定した時は、csvファイルのタイトルを読み込んだ後で、指定の項目名のタイトル名を変更します。

selectコマンドでは、SQLのviewの計算式の項目のような振る舞いとなり、区切り値ファイルに出力される値にのみ適用されます。データベースには保存されません。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

例)
"f1" "タイトル1" "f2" "タイトル2" "c1" "タイトル3"

select update delete

-where "where情報" "値" ...

データを絞り込む条件を指定します。

項目名は f1 f2 f3 ... のように f + 項目番号 となります。

カスタム項目名は c1 c2 c3 ... のように c + 項目番号 となります。

数値項目の条件を指定する場合は、項目名を cast(f3 as real) のように記述して、比較対象の数値をそのまま記述します。

文字列項目の条件を指定する場合は、比較対象の文字列をwhere情報の後ろに個別に指定して、where情報に {0} {1} のような値のインデックスを指定します。

例)
"f1 = {0} and f2 = {1} and cast(f3 as real) > 50" "値1" "値2"
-whereinsertdate "日数情報"

データを絞り込む作成日時による条件を指定します。

日数情報には year(数値), month(数値), day(数値) の何れかを指定します。

year(数値), month(数値), day(数値) の前に < (指定日より前) か > (指定日以降) を指定できます。

日数情報の < や > を省略すると < (指定日より前) となります。

-where と同時に指定した場合は -whereinsertdate が優先されます。

例)
作成日時が「現在日時から3ヶ月前」より前のデータ
"month(3)"
作成日時が「現在日時から1年前」以降のデータ
">year(1)"
-whereupdatedate "日数情報"

データを絞り込む更新日時による条件を指定します。

日数情報には year(数値), month(数値), day(数値) の何れかを指定します。

year(数値), month(数値), day(数値) の前に < (指定日より前) か > (指定日以降) を指定できます。

日数情報の < や > を省略すると < (指定日より前) となります。

-whereinsertdate と同時に指定した場合は -whereupdatedate が優先されます。

例)
更新日時が「現在日時から3ヶ月前」より前のデータ
"month(3)"
更新日時が「現在日時から1年前」以降のデータ
">year(1)"

共通

-limit "リミット情報" ...

レコードの処理開始位置と件数を指定します。

数値を1つ指定すると、先頭から指定件数のみ処理されます。

数値を2つ指定すると、指定位置から指定件数のみ処理されます。(指定位置は0から始まります)

insert、かつ、データ開始行を指定している、かつ、-limit に数値を2つ指定した際は、指定したデータ開始行より -limit の1つめの値(指定位置)が優先されます。

例)
先頭から10件
"10"
10件目から5件
"9" "5"
-z "結果ファイル名"

処理結果を出力します。

-za が指定されていない時は、結果ファイルが存在していた時に上書きします。

-zmf 処理結果を出力するフォルダーが存在しない時にフォルダーを作成します。
-za 結果ファイルが存在していた時に追加書き込みします。
-zof 結果ファイルの内容を「1行目: 終了コード 2行目: エラーメッセージ」のように2行で出力します。
-ec 終了コードと結果ファイルに出力されるエラーメッセージの一覧を出力します。

使用例

入力ファイルに以下のファイルを使用します。

in.csv

社員番号,氏名,部署,役職
0001,織田 信長,営業,課長
0002,豊臣 秀吉,営業,
0003,武田 信玄,総務,部長

csvファイル in.csv をデータベースファイル master.db にinsert

svTreeDB.exe -c insert -isv in.csv -odb master.db -tl 1 -dsl 2

データ行のみ出力。

svTreeDB.exe -c select -idb master.db -osv out.csv

out.csv

0001,織田 信長,営業,課長
0002,豊臣 秀吉,営業,
0003,武田 信玄,総務,部長

データ行のみ出力。 各行の先頭にレコード番号を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -orn

out.csv

2,0001,織田 信長,営業,課長
3,0002,豊臣 秀吉,営業,
4,0003,武田 信玄,総務,部長

タイトル行とデータ行を出力。部署が営業のデータ。

svTreeDB.exe -c select -idb master.db -osv out.csv -ot -where "f3 = {0}" "営業"

out.csv

社員番号,氏名,部署,役職
0001,織田 信長,営業,課長
0002,豊臣 秀吉,営業,

社員番号が0002の役職を社長に変更。

svTreeDB.exe -c update -idb master.db -set "f4" "社長" -where "f1 = {0}" "0002"

タイトル行とデータ行を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ot

out.csv

社員番号,氏名,部署,役職
0001,織田 信長,営業,課長
0002,豊臣 秀吉,営業,社長
0003,武田 信玄,総務,部長

氏名が織田 信長の行を削除。

svTreeDB.exe -c delete -idb master.db -where "f2 = {0}" "織田 信長"

タイトル行とデータ行を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ot

out.csv

社員番号,氏名,部署,役職
0002,豊臣 秀吉,営業,社長
0003,武田 信玄,総務,部長

csvファイル in.csv をデータベースファイル master.db にinsert。氏名の先頭からスペースまでの部分(名字)だけを追加項目として取得する。

svTreeDB.exe -c insert -isv in.csv -enfl f2 "^([^ ]+)" -odb master.db -tl 1 -dsl 2

データ行のみ出力。全項目 + 名字を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ofl f1-f4 c1

out.csv

0001,織田 信長,営業,課長,織田
0002,豊臣 秀吉,営業,,豊臣
0003,武田 信玄,総務,部長,武田

csvファイル in.csv をデータベースファイル master.db にinsert。

svTreeDB.exe -c insert -isv in.csv -odb master.db -tl 1 -dsl 2

営業を第1営業に変更。

svTreeDB.exe -c update -idb master.db -where "f3 = '営業'" -setex "f3" "replace" "f3" "営業" "第1営業"

データ行のみ出力。

svTreeDB.exe -c select -idb master.db -osv out.csv

out.csv

0001,織田 信長,第1営業,課長
0002,豊臣 秀吉,第1営業,
0003,武田 信玄,総務,部長

氏名の名前(スペースの後ろの文字)をc1にセット。

svTreeDb.exe -c update -idb master.db -setex "c1" "re.match" "f2" " (.+)" "$1"

データ行のみ出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ofl f1-f4 c1

out.csv

0001,織田 信長,第1営業,課長,信長
0002,豊臣 秀吉,第1営業,,秀吉
0003,武田 信玄,総務,部長,信玄

csvファイル in.csv をデータベースファイル master.db にinsert。項目に更新日時と登録日時を追加し、日時を登録日時にセット。

svTreeDB.exe -c insert -isv in.csv -odb master.db -tl 1 -dsl 2 -ifnl "1" "2" "3" "4" "5" "6" -st "f5" "更新日時" "f6" "登録日時" -set "f6" "2022/08/09 10:00:00"

タイトル行とデータ行を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ot

out.csv

社員番号,氏名,部署,役職,更新日時,登録日時
0001,織田 信長,営業,課長,,2022/08/09 10:00:00
0002,豊臣 秀吉,営業,,,2022/08/09 10:00:00
0003,武田 信玄,総務,部長,,2022/08/09 10:00:00

登録日時を更新。

svTreeDb.exe -c update -idb master.db -set "f5" "2022/08/10 15:30:00"
svTreeDB.exe -c select -idb master.db -osv out.csv -ot

out.csv

社員番号,氏名,部署,役職,更新日時,登録日時
0001,織田 信長,営業,課長,2022/08/10 15:30:00,2022/08/09 10:00:00
0002,豊臣 秀吉,営業,,2022/08/10 15:30:00,2022/08/09 10:00:00
0003,武田 信玄,総務,部長,2022/08/10 15:30:00,2022/08/09 10:00:00

入力ファイルに以下のファイルを使用します。8桁の生年月日がありますが、全角と半角のデータが混在しています。

in.csv

社員番号,氏名,部署,役職,生年月日
0001,織田 信長,営業,課長,15340623
0002,豊臣 秀吉,営業,,15370317
0003,武田 信玄,総務,部長,15211201

csvファイル in.csv をデータベースファイル master.db にinsert。生年月日を半角に統一し、yyyy/mm/ddの形式にして登録する。

svTreeDB.exe -c insert -isv in.csv -odb master.db -tl 1 -dsl 2 -setex "f5" "sc.zenhan" "f5" "半角英数記号" "f5" "re.match" "f5" "(\d{4})(\d{2})(\d{2})" "$1/$2/$3"

タイトル行とデータ行を出力。

svTreeDB.exe -c select -idb master.db -osv out.csv -ot

out.csv

社員番号,氏名,部署,役職,生年月日
0001,織田 信長,営業,課長,1534/06/23
0002,豊臣 秀吉,営業,,1537/03/17
0003,武田 信玄,総務,部長,1521/12/01

リターンコード

リターンコードは以下の通りです。

0 正常終了
1 結果ファイルを出力するフォルダーが存在しません。 '結果ファイル名'
2 コマンドは insert, select, update, delete の何れかを指定してください。 'コマンド'
3 区切り値ファイルフォーマットに使用できない値です。 '区切り値ファイルフォーマット'
4 区切り値ファイルフォーマットエスケープに使用できない値です。 '区切り値ファイルフォーマットエスケープ'
5 エンコーディングに使用できない値です。 'エンコーディング'
6 タイトル行は1以上の整数を指定してください。 'タイトル行'
7 データ開始行は1以上の整数を指定してください。 'データ開始行'
8 データ開始行はタイトル行より大きい値を指定してください。 'データ開始行'
9 値抽出に使用できない項目名です。 '項目名'
10 値抽出の正規表現でエラーが発生しました。 '正規表現'
11 出力項目に使用できない項目名です。 '項目名'
12 insertは入力区切り値ファイル名か入力値リストを指定してください。
13 insertは出力データベースファイル名を指定してください。
14 入力区切り値ファイルが存在しません。 '入力区切り値ファイル名'
15 selectは入力データベースファイル名を指定してください。
16 selectは出力区切り値ファイル名を指定してください。
17 updateは入力データベースファイル名を指定してください。
18 deleteは入力データベースファイル名を指定してください。
19 入力データベースファイルが存在しません。 '入力データベースファイル名'
20 プライマリーキーに使用できない項目名です。 '項目名'
21 数値項目に使用できない項目名です。 '項目名'
22 svTreeDBにて作成されたデータベースではありません。 '入力データベースファイル名'
23 日数情報に使用できない値です。 '日数情報'
24 検索できませんでした。where, order by, limit の何れかに問題があります。
25 リミットに使用できない値です。 'リミット情報'
26 入力項目番号に使用できない値です。 '入力項目番号'
27 値抽出新規項目に使用できない項目名です。 '項目名'
28 値抽出新規項目の正規表現でエラーが発生しました。 '正規表現'
29 セットに使用できない項目名です。 '項目名'
30 拡張セットに使用できない設定項目名です。 '設定項目名'
31 拡張セットに使用できないメソッド名です。 'メソッド名'
32 拡張セットに使用できない対象項目名です。 '対象項目名'
33 拡張セットの正規表現でエラーが発生しました。 '正規表現'
34 プライマリーキーの項目の値が重複するレコードが存在します。 '入力区切り値ファイル名'
35 タイトルに使用できない項目名です。 '項目名'
36 出力データが0件の時の出力区切り値ファイルの扱いに使用できない値です。 '出力データが0件の時の出力区切り値ファイルの扱い'
37 対象外のスイッチが指定されています。 'スイッチ'
99 例外が発生しました。 'エラーメッセージ'

注意事項

  • ファイル名やオプション値にスペースが含まれる場合はダブルクォートで括ってください。
  • 区切り値ファイルに追加書き込みを行う時は、区切り値ファイルフォーマットやエンコーディングを統一するようにしてください。(常に同じ区切り値ファイルフォーマットやエンコーディングを指定してください)

ライセンスについて

svTreeDBは、eDocArrangementの購入者にライセンスされます。試用については、eDocArrangementと同じ期間、試用できます。

動作に必要なライブラリー

.NET Framework 4.6.2 以降

使用しているオープンソースライブラリー

System.Data.SQLite 1.0.116.0 を使用しています。

Ude 0.1.0.0 を使用しています。

更新履歴

2022/11/15 Version 1.0.7

  • 「-osvcz」オプションにて、-ot を指定しなかった時に zerobyte に切り替わらない不具合を修正。
  • 対象外のスイッチを指定した時にエラーとなるように修正。

2022/09/07 Version 1.0.6

  • 「-setex」オプションに、項目値展開用フォーマットを実装。
  • 「-set」と「-setex」「-st」オプションを、selectコマンドでも使用できるように変更。selectの際は、SQLのviewの計算式の項目のような振る舞いとなり、区切り値ファイルに出力される値にのみ適用されます。データベースには保存されません。
  • 「-noduplication」オプションで、重複キーエラーログファイル名を省略した時は、重複しないデータのみ登録する(重複するデータは登録しない)振る舞いを追加。(重複エラーは発生しません)
  • 「-osvcz」オプションを追加。出力データが0件の時の出力区切り値ファイルの扱いを指定します。
  • 指定された出力区切り値ファイルのフォルダーが存在しない時は、フォルダーを作成するようにしました。
  • 指定された出力データベースファイルのフォルダーが存在しない時は、フォルダーを作成するようにしました。
  • insertでデータを登録したデータベースファイルに対してinsertを行う際に、-tl や -st でタイトル情報を指定しても、タイトル情報がデータベースに登録されない不具合を修正。
  • 「-where」オプションにて、「項目の値が空文字列」("c1 = {0}" "" など)を指定した際に、対象項目が存在して空文字列が設定されているレコードと、対象項目が存在しないレコードにマッチするように仕様変更。

2022/08/30 Version 1.0.5.1

  • VC++ 2015 Update 3 のランタイムライブラリーがインストールされていない環境でも動作するように調整。

2022/08/12 Version 1.0.5

  • 「-zof」オプションを追加。結果ファイルの内容を「1行目: 終了コード 2行目: エラーメッセージ」のように2行で出力します。
  • 「-setex」オプションに、全角半角変換、特殊文字変換、先頭末尾スペース削除を実装。
  • 「-set」と「-setex」オプションを、insertコマンドでも使用できるように変更。insertの際は、csvファイルの全てのレコードに対して指定の項目に指定の値を設定します。
  • 「-ofl」オプションを省略した際に、レコードに含まれる最大項目番号の数分の項目を全て出力するように変更。存在しない項目番号の値は空文字列となります。
  • 「-limit」オプションをinsertコマンドでも使用できるように変更。insert、かつ、データ開始行を指定している、かつ、-limit に数値を2つ指定した際は、指定したデータ開始行より -limit の1つめの値(指定位置)が優先されます。
  • 「-st」オプションを追加。「-set」オプションと同様の書式でタイトルを指定できます。insertコマンドとupdateコマンドで使えます。

2022/07/01 Version 1.0.4

  • 「-noduplication」オプションを追加。insertの際に、プライマリーキーの項目の値が同一のレコードをエラーとします。エラーとなった区切り値ファイルのレコードの情報を出力する重複キーエラーログファイル名を指定します。
  • 「-dnier」オプションを追加。項目の値が全て空のレコードは登録しません。

2021/07/28 Version 1.0.3

  • 「-ifnl」オプションで指定した範囲表記が、指定通りに解釈されない不具合を修正。
  • 「-whereupdatedate」オプションを追加。データを絞り込む更新日時による条件を指定します。
  • selectのパフォーマンス改善。

2021/03/29 Version 1.0.2

  • selectで入力データベースファイルが存在しない時は、エラーとせず、空の出力区切り値ファイルを出力するように変更。
  • 「-ofl」、「-ifnl」オプションで項目名の範囲表記に対応しました。
  • updateに「-setex」オプションを追加。

2021/03/19 Version 1.0.1

  • 「-ifnl」オプションを追加。DBにインポートする項目番号を指定します。
  • 「-enfl」オプションを追加。DBにインポートする項目値を正規表現を使って一部分のみ取得し、新しい項目として登録します。
  • タイトル行出力と出力項目指定を同時に指定すると、指定した項目のタイトルではなく、常に全ての項目のタイトル行が出力されてしまう不具合を修正。

2021/03/01 Version 1.0.0

  • 新規リリース。