仕事柄、よくテキストファイルから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)
コメントを受け付けておりません。