ある時「販売管理システム」を制作していたところ・・・お客様から「集金代行結果データ」を自動で読み込むことが出来ないかと云った相談を受ける・・・
確かに、非常に多くの入金データを顧客を選んで付き合わせを行って入力処理をするのは大変な作業である。
データを見たところ特に問題のないCSV形式のデータだったので、「phpMyAdminでも同じような事が出来るし・・・」と思い軽く引き受けてしまった。
簡単なテーブルを設計してまずそのCSVファイルをphpMyAdminで読み込んでみると。。。確かにデーブルにデータが読み込まれて「入金結果データテーブル」が形成されている。
ここまで来るともう出来たも同然。 何故かと云うとphpMyAdminも所詮PHPでコーディングされており、いざとなればその部分を参考に作ってしまえば良いということである。
そこで少しこれらの事について調べてみる・・・
どうやら、この「LOAD DATA INFILE」を使えば簡単に読み込めるような事が読み取れる。
マニュアルには「ローカルデータ」が読み込めるような事が書いてあるが一向に上手く行かない・・・
そこで頼みの綱のphpMyAdminを少し解析してみると、どうやらLOCALからファイルのアップロードを行いその時にブラウザに作られるテンポラリファイルを指定してデータのインポートをしているような感じになっているので、同じようなqueryを作って試すが、クウォート関連のエラーにはまってしまう
このままでは生産性が悪いのでこのLOAD DATA INFILEを使用するのは一時ペンディングにし、CSVファイルをサーバにアップロードし、そのCSVファイルからオーソドックスな方式でデータを読み込むことにした。
結果お見事に成功した。 やはり横着はいけませんネ^^; 結局オーソドックスにやった方が良い方法は沢山あります。
総括・・・
LOAD DATA INFILEを諦めた訳ではありません、一番重要なのはLOAD DATA [LOCAL] INFILEのLOCALオプションが問題のような気がします。このLOCALオプションを使うことにより、ローカルファイルが使えるようになるようですが、その詳細に関する情報がありません(サーバ環境の設定もある感じ)、恐らくアップロード時にキャッシュされたTMPファイルを指定すれば良いような気がしますが、時間のある時にまた研究してみます。
そんな事よりも口座引き落とし用の全銀データを作らなくては・・・
|