pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

東証株式相場表:PDFMinerで解析しMySQLへの流れ(6)MySQL項目データ形式調整

MySQLへのデータ形式変えたら1割くらい容量減った

(1)東証株式相場表(日報、PDF)をDLし、(2)PDFMinerで解析しCSV保存。(3)CSVをMySQLに放り込む、という流れの(3)に関係する備忘録です。

株価データには、数字のほか「-」というのがあって…

始値、高値、安値、終値が前場・後場で計8値あります。それ以外に、加重平均値、株式売買数を含め、約定してたら数字(数値)が表示されますが、売買なし(約定なし)だと「-」のように表示されます。ということで、CSV上では「”123.45”」という具合に、数値化できる数字の並びをつかい、「-」との矛盾が出ないようにしてました。しかし、イロイロやってみるとMySQLが適宜うまくやってくれるようです…ほぼ自動で。

MySQLのデータ形式を10進数で設定して、放り込んでみました。phpMyAdminで表示すると次のようなことでした。

  • 「-」のはずの箇所:「0」(数値)が入ってるように見えました。
  • SELECT * FROM `market_data` WHERE `mng_low`= 'NULL' を実行:ヒットした行がたくさん表示されましたので、CSCVで「-」だったところを、MySQLで「0」(数値)とは異なる扱いが可能なようです。
  • 数字(例”123.45”)を放り込んだ:数値としてSQLなどでヒットしました。
  • 数字を数値(float)に変えて放り込んだ:テーブルのデータ容量が10%くらい減りました。

結果、MySQLの項目設定、ある行では数値、別の行では文字であっても大丈夫そう、ということみたいです。なお、phpMyAdminでMySQLのテーブル項目設定するとき、NULLを受け入れるようチェックを入れておくことが必要かと…おそらく。

「LOAD DATA INFILE 」つかい約59万行のCSVデータを約6秒でMySQLへ放り込めた。

3月1日から10月21日までの159市場日データCSV(313~316KB/日)を6秒弱で「LOAD DATA INFILE 」がMySQLへ放り込んでくれました。

約定なしの箇所を除き、他は数値(整数と浮動小数点、10進数)となっているので、漢字の文字化けなども起こらないかと…。「-」は微妙だけど…。

「LOAD DATA INFILE 」をつかうPythonスクリプトは改修しなくても大丈夫そうです…爺の一人合点かも…。