DataBaseToolはコンソールアプリケーションです。データベースSQLiteにアクセスし、CSVファイルのデータをテーブルに登録したり、検索結果をCSVファイルに出力したりすることができます。
書式
DataBaseTool 入力ファイル名 -Dデータベースファイル名 [-E] [-I入力テンプレートファイル名] [-Sデータ開始行] [-O出力ファイル名] [-A] [-T] [-U出力テンプレートファイル名] [-Mメッセージ出力ファイル名]
引数の仕様は以下の通りです。[]は省略可能な引数です。
入力ファイル名 | Iオプションを指定した場合はCSVファイル、指定しない場合はSQLが記述されたテキストファイルを指定してください。 |
---|---|
-Dデータベースファイル名 | Dオプションは必ず指定してください。データベースファイルが存在しない場合は自動作成します。 |
-E | Eオプションを指定した場合は結果を返さないSQL(insertやupdate、delete)として処理を実行します。Eオプションを指定しないの場合は結果を返すSQL(select)として処理を実行します。省略可。 |
-I入力テンプレートファイル名 | Iオプションを指定した場合、入力ファイルで指定されたCSVを読み込み、1行毎にIオプションで指定されたテンプレートファイルを展開して実行します。省略可。 |
-Sデータ開始行 | Iオプションが指定されている場合にSオプションを指定すると、CSVファイルのデータ開始行を指定できます。指定されていない場合は1行目からデータとして処理をします。省略可。 |
-O出力ファイル名 | Oオプションを指定した場合、結果をファイルに出力します。指定されていない場合は、結果を標準出力に出力します。省略可。 |
-A | Oオプションが指定されている場合にAオプションを指定すると、出力ファイルに追記します。Aオプションが指定されていない場合は上書きとなります。省略可。 |
-T | Tオプションを指定した場合、出力データはタブ区切り形式となります。指定されていない場合はCSV形式となります。省略可。 |
-U出力テンプレートファイル名 | Uオプションを指定した場合、出力データは出力テンプレートファイルの書式に従って出力されます。(Tオプションは無視されます。)省略可。 |
-Mメッセージ出力ファイル名 | Mオプションを指定した場合、エラーメッセージをファイルに出力します。指定されていない場合は、標準出力に出力します。省略可。 |
Iオプションを指定した場合、入力ファイルに指定されたのCSVファイルを読み込みます。CSVファイルの1行を読み込む毎にIオプションで指定されたテンプレートファイルを展開して実行します。
テンプレートファイルを使うと、実行するSQLの任意の場所にCSVで読み込んだデータを埋め込むことができます。以下の例では、顧客マスタにデータを登録するinsert文のvalues句に、CSVのデータがセットされて実行されます。
insert into 顧客マスタ values ({%GET_FIELD_VALUES_IN_SQL_VALUES(in,1-2)})
values句の「{%GET_FIELD_VALUES_IN_SQL_VALUES(in,1-2)}」の部分がマクロ文となっており、CSVで読み込んだデータの1カラム~2カラムの内容が、SQL文のvalues句として展開されます。
テンプレートファイルのマクロ文の書式は、後述の「テンプレートファイルのマクロ書式」を参照してください。
Iオプションが指定されていない場合は、入力ファイルにSQLが記述されたテキストファイルを指定します。処理の実行は、単純に記述されているSQLを実行するだけとなります。
Oオプションを指定した場合、結果をファイルに出力します。指定しない場合は、結果を標準出力に出力します。
Uオプションを指定した場合、出力データは出力テンプレートファイルの書式に従って出力されます。指定しない場合は、CSV形式で出力されます。Tオプションを指定した場合は、タブ区切り形式で出力されます。
Uオプションを指定して、以下の例をテンプレートファイルに記述した場合、CSV形式で出力される結果と同じになります。
{%GET_FIELD_VALUES_IN_CSV(table,1-)}
SQLのcreate tableを記述したファイル(sql.txt)を実行し、DB(master.db)にテーブルを作成する。
DataBaseTool c:\sql.txt -Dc:\master.db -E
CSV形式のファイル(data.csv)からデータを読み込みDB(master.db)のテーブルにデータを登録する。データ登録用のSQLはテキストファイル(in_template.txt)に記述する。
DataBaseTool c:\data.csv -Dc:\master.db -Iin_template.txt -E
SQLのselectを記述したファイル(sql.txt)を実行し、DB(master.db)のテーブルからデータを取得しCSV形式でファイル(out.csv)に出力する。
DataBaseTool c:\sql.txt -Dc:\master.db -Oout.csv
テンプレートファイルのマクロ書式の仕様は以下の通りです。
SQL実行のSLELCT文の結果レコードをCSV(カンマ区切り)で取得します。対象には「table」を指定します。
列番号は、結果レコードの列番号を指定します。列番号は複数記述することが可能です。例えば1番目と2番目の項目を取得したい場合は、1,2と記述します。2番目~5番目の項目を取得したい場合は、2-5と記述します。1,3-5のようにカンマとハイフンを組み合わせて指定することも可能です。1-や-3のように、開始や終了の列番号を省略することも可能です。
取得されるテキストはCSV形式になります。複数の項目がカンマで区切られ、項目中にカンマがある場合は、項目が”で囲われます。単一の列を取得する場合でも、項目中にカンマがある場合は、項目が”で囲われます。
項目中に"がある場合は、""と2つ続けて記述され、項目が”で囲われます。
{%GET_FIELD_VALUES_IN_CSV(table,2,4)}
{%GET_FIELD_VALUES_IN_CSV(table,1-3)}
{%GET_FIELD_VALUES_IN_CSV(table,1,4)}
SQL実行のSLELCT文の結果レコードをTSV(タブ区切り)で取得します。対象には「table」を指定します。
返却文字列がタブ区切りとなる以外は、CSVテキスト取得マクロと同じ仕様となります。
SQL実行のSLELCT文の結果レコードを引数で指定された区切り文字区切りで取得します。対象には「table」を指定します。
基本的な動作はCSVテキスト取得マクロと同じですが、区切り文字、エスケープ処理の有無、囲い文字、全ての項目に囲い文字を付与するかどうかを指定可能です。
エスケープ処理は、項目中に区切り文字が含まれている場合に、囲い文字で項目を囲います。また、項目中に囲い文字が含まれている場合に囲い文字を2つ続けて記述し、囲い文字で項目を囲います。
例えば1番目のデータが「123」、2番目のデータが「A,BC」の場合、「123,"A,BC"」と取得されます。
1番目のデータが「123」、2番目のデータが「A"BC」の場合、「123,"A""BC"」と取得されます。
全項目囲い文字付与有無に「有」が指定された場合は、全項目が囲い文字で囲われます。エスケープ処理ではないので、同時にエスケープ処理を行いたい場合は、エスケープ有無に「有」を合わせて指定してください。
{%GET_FIELD_VALUES_IN_SV(table,|,有,",有,1-)}
{%GET_FIELD_VALUES_IN_SV(table,\,,無,',無,1-5)}
{%GET_FIELD_VALUES_IN_SV(table,\,,有,',無,1-5)}
入力ファイルから読み込んだCSVテキストをSQL用のカンマ区切りテキストとして取得します。本マクロでは、SQLに必要なエスケープ処理を行います。対象には「In」を指定します。
以下、顧客マスタのテーブルレイアウトが以下の場合の例となります。
CREATE TABLE 顧客マスタ( fax_no VARCHAR(16), name text, primary key (fax_no) )
insert into 顧客マスタ values ({%GET_FIELD_VALUES_IN_SQL_VALUES(in,1-2)})
リターンコードは以下の通りです。
-1 | 入力ファイルが指定されていません。入力ファイルを指定してください。 |
---|---|
-2 | Dスイッチが指定されていません。Dスイッチは必ず指定してください。 |
-3 | Dスイッチ引数で指定されたデータベースファイルが作成、又はオープンできません。 |
-4 | Dスイッチ引数が指定されていません。データベースファイル名を指定してください。 |
-5 | Oスイッチ引数が指定されていません。 |
-6 | Iスイッチ引数で指定された入力テンプレートファイルが見つかりません。 |
-7 | Iスイッチ引数が指定されていません。入力テンプレートファイル名を指定してください。 |
-8 | Sスイッチ引数は整数を指定してください。 |
-9 | Sスイッチ引数が指定されていません。データ開始行を指定してください。 |
-10 | Uスイッチ引数で指定された出力テンプレートファイルが見つかりません。 |
-11 | Uスイッチ引数が指定されていません。出力テンプレートファイル名を指定してください。 |
-12 | Mスイッチ引数(メッセージファイル)が指定されていません。 |
-13 | 仕様外のスイッチが指定されました。 |
-14 | 入力ファイルが見つかりません。 |
-50 | 実行エラー。SQLの実行でエラーが発生しました。 |
DatabaseToolは、eDocArrangementの購入者にライセンスされます。試用については、eDocArrangementと同じ期間、試用できます。
.NET Framework 4.6.2 以降
System.Data.SQLite 1.0.118.0 を使用しています。