Choco Soft

Nadesiko DE RDB

Choco Soft header image 2

なでしこでSQL文の作成(応用編)

2016年04月11日 · コメント(0) · なでしこでバッチ外伝

仕事柄、よくテキストファイルからSQLを作成するケースがあるので便利な方法として開示します。
(結構、EXCELでデータを渡すお客さん多いので。)
※単に「,」で区切っただけなら良いのですが、更にその中からデータを拾う必要がある時の例になります。

このサンプル例は、特定の職員番号の人のステータスに「20」をセットするものです。
※「attends」テーブルに対して、特定の職員番号「syokuin_no」レコードの「status」に「20」をセットしてます。

お客様からもらったExcelをCsv形式で保存してから開始です。
※この例では、EXCELの2列目に「職員番号:10234」と入っていたデータを取り出しています。

完成したSQLは、そのままコマンドラインで流しても使えますし、phpMyAdmin等のツール上でも流せます。
ただし、漢字コードはSlftJISになるので、UTF8等他の漢字コードを扱う場合は作成完了したSQLを一度他のテキストエディターに読み込ませて、漢字コードを変換してからご利用ください。
もちろん、元のデータに漢字やカタカナが無い場合は関係ありません。

#■SQLの元ファイルを選択する。■
fileBとは文字列
fileB=「*.csv」でファイル選択#CSVファイルの場合

CREATE_SQL
終わる。

●CREATE_SQL
#◆ローカル変数宣言◆
 TAISHOとは配列
 TAISHO2とは配列
 ERR_DATAとは配列
 SQL_DATAとは文字列

 「{fileB}」を毎行読んで反復

  それをTAISHO2に代入
  TAISHO2の「”」を「」に置換してTAISHOに代入。#余計な「”」を削除する。
  TAISHOの「’」を「」に置換してTAISHOに代入。#余計な「’」を削除する。

  TAISHOの「,」まで切り取る。
  FLD1はそれ#ID

  TAISHOの「:」まで切り取る#Excelのセル内職員番号:にあった場合ですね。
  FLD2はそれ#

  TAISHOの「,」まで切り取る#Excelのセル内職員番号:にあった場合ですね。
  FLD3はそれ#★職員番号★

  TAISHOの「{改行}」まで切り取る#テキストファイルは大体、最後が改行で終わるので。
  FLD3はそれ#

  エラー監視
   「UPDATE attends SET status = 20 FROM syokuin WHERE syokuin.no = ‘{FLD3}’;」をSQL_DATAに配列追加

  エラーならば
   「{FLD1},{FLD2},{FLD3}」をEND_DATAに配列追加。#必要ならば、どこかに保存してください。

「{デスクトップ}SQL0424.csv」に保存#保存ファイル名は何でも良いです。
戻る。

タグ : ··

コメント(0)

コメントを受け付けておりません。