こんにちは。デラ・マタドーラです。
過去の株価データを分析するために、株価データをDB管理しようと最近少しずつ作業しているところです。
過去の株価データを無料でダウンロードできる「 株価データ倉庫 」のデータを使用しているのですが、DBにインポートする際に色々エラーが起きました。
何回かトライ&エラーを重ねて正常にインポートできるようになったので、エラー原因となった箇所をパターン別にまとめておきます。
◆目次
対象のデータ
「 株価データ倉庫 」で提供している株価データのうち、2006年~2017年のもの。
エラー原因① 銘柄名に不要なタブが入っている(11箇所)
このサイトの株価データは、項目がタブで区切られたテキスト形式です。
しかし、銘柄名の中にタブが入っていたため、項目が1つずれてエラーとなっていました。 また、項目がずれた影響なのか、一番最後の項目「出来高」が出力されてなく、「終値」が1000で割られていました。(本来は出来高が1000で割られているのが正しい)
対処方法は、
・項目名のタブを取り除く
・終値が1000で割られているので修正
・出来高は他のサイトで調査して入力する
対象箇所は以下の11箇所です。
日付 | 銘柄コード |
---|---|
20150109 | 2044 |
20150109 | 2045 |
20150109 | 2046 |
20150109 | 2047 |
20150115 | 2044 |
20150116 | 2044 |
20150116 | 2045 |
20150116 | 2046 |
20150116 | 2047 |
20140804 | 9607 |
20150113 | 1634 |
エラー原因② 数値に不要な文字がある(1箇所)
数値項目に不要な文字”]”が含まれていてエラーとなりました。
この文字を取り除けば解決しました。
対象箇所は以下の1箇所です。
日付 | 銘柄コード |
---|---|
20160128 | 1905 |
エラー原因③ 銘柄コードの間違い(3箇所)
銘柄コード「2041」が「2040」になっていて、「2040」が重複したことでエラーとなっていました。
銘柄コードを「2041」に修正することで解決しました。
対象箇所は以下の3箇所です。
日付 | 銘柄コード |
---|---|
20140731 | 2040 |
20171227 | 2040 |
20171228 | 2040 |
エラー原因④ 銘柄名の最後に謎の文字がある(145箇所)
銘柄名の最後に謎の文字(サクラエディタで見ると文字コード「?8A」となっていた)があり、後続のタブがタブと認識されず、項目がずれてエラーとなっていました。
この文字を取り除けば解決しました。
ただ、これはプログラム言語などによりエラーとならないかもしれないですね。
対象箇所は以下の145箇所です。
日付 | 銘柄コード |
---|---|
20111017 | 2029 |
20111018 | 2029 |
20111019 | 2029 |
20111020 | 2029 |
20111021 | 2029 |
20111024 | 2029 |
20111025 | 2029 |
20111026 | 2029 |
20111027 | 2029 |
20111028 | 2029 |
20111031 | 2029 |
20111101 | 2029 |
20111102 | 2029 |
20111104 | 2029 |
20111107 | 2029 |
20111108 | 2029 |
20111109 | 2029 |
20111110 | 2029 |
20111111 | 2029 |
20111114 | 2029 |
20111115 | 2029 |
20111117 | 2029 |
20111118 | 2029 |
20111121 | 2029 |
20111122 | 2029 |
20111124 | 2029 |
20111125 | 2029 |
20111128 | 2029 |
20111129 | 2029 |
20111130 | 2029 |
20111201 | 2029 |
20111202 | 2029 |
20111205 | 2029 |
20111206 | 2029 |
20111207 | 2029 |
20111208 | 2029 |
20111209 | 2029 |
20111212 | 2029 |
20111213 | 2029 |
20111214 | 2029 |
20111215 | 2029 |
20111216 | 2029 |
20111219 | 2029 |
20111220 | 2029 |
20111221 | 2029 |
20111222 | 2029 |
20111226 | 2029 |
20111227 | 2029 |
20111228 | 2029 |
20111229 | 2029 |
20111230 | 2029 |
20120104 | 2029 |
20120105 | 2029 |
20120106 | 2029 |
20120110 | 2029 |
20120111 | 2029 |
20120112 | 2029 |
20120113 | 2029 |
20120116 | 2029 |
20120118 | 2029 |
20120119 | 2029 |
20120120 | 2029 |
20120123 | 2029 |
20120124 | 2029 |
20120125 | 2029 |
20120126 | 2029 |
20120127 | 2029 |
20120130 | 2029 |
20120131 | 2029 |
20120201 | 2029 |
20120202 | 2029 |
20120203 | 2029 |
20120206 | 2029 |
20120207 | 2029 |
20120208 | 2029 |
20120209 | 2029 |
20120210 | 2029 |
20120213 | 2029 |
20120214 | 2029 |
20120215 | 2029 |
20120216 | 2029 |
20120217 | 2029 |
20120220 | 2029 |
20120221 | 2029 |
20120222 | 2029 |
20120223 | 2029 |
20120224 | 2029 |
20120227 | 2029 |
20120228 | 2029 |
20120229 | 2029 |
20120301 | 2029 |
20120302 | 2029 |
20120305 | 2029 |
20120306 | 2029 |
20120307 | 2029 |
20120308 | 2029 |
20120309 | 2029 |
20120312 | 2029 |
20120313 | 2029 |
20120314 | 2029 |
20120315 | 2029 |
20120316 | 2029 |
20120319 | 2029 |
20120321 | 2029 |
20120322 | 2029 |
20120323 | 2029 |
20120326 | 2029 |
20120327 | 2029 |
20120328 | 2029 |
20120329 | 2029 |
20120330 | 2029 |
20120402 | 2029 |
20120403 | 2029 |
20120404 | 2029 |
20120405 | 2029 |
20120406 | 2029 |
20120409 | 2029 |
20120410 | 2029 |
20120411 | 2029 |
20120412 | 2029 |
20120413 | 2029 |
20120417 | 2029 |
20120418 | 2029 |
20120419 | 2029 |
20120420 | 2029 |
20120423 | 2029 |
20120424 | 2029 |
20120425 | 2029 |
20120426 | 2029 |
20120427 | 2029 |
20120501 | 2029 |
20120502 | 2029 |
20120507 | 2029 |
20120508 | 2029 |
20120509 | 2029 |
20120511 | 2029 |
20120514 | 2029 |
20120515 | 2029 |
20120516 | 2029 |
20120517 | 2029 |
20120518 | 2029 |
20120521 | 2029 |
20120522 | 2029 |
20120523 | 2029 |
20120524 | 2029 |
エラー原因⑤ 東証・名証のデータが入っている(22箇所)
このサイトのデータは、複数市場に上場している銘柄であれば東証の株価を出力するはずなのですが、名証もデータも出力されていました。 そのため、主キーとしていた日付、銘柄コードが重複して一意性制約エラーとなっていました。
データの中には東証・名証などが識別できる項目はないため、該当日付の株価を他サイトで調査し、名証のデータを削除することでエラー解決しました。
対象箇所は以下の22箇所です。
日付 | 銘柄コード |
---|---|
20171227 | 1812 |
20171227 | 2811 |
20171227 | 3086 |
20171227 | 6501 |
20171227 | 6502 |
20171227 | 6902 |
20171227 | 7012 |
20171227 | 7747 |
20171227 | 7751 |
20171227 | 8058 |
20171227 | 8306 |
20171228 | 2209 |
20171228 | 3086 |
20171228 | 3320 |
20171228 | 3543 |
20171228 | 5332 |
20171228 | 6502 |
20171228 | 7011 |
20171228 | 7514 |
20171228 | 8306 |
20171228 | 8316 |
20171228 | 8601 |
エラー原因⑥ 銘柄コードと銘柄名の間がタブじゃない(2箇所)
銘柄コードと銘柄名の間がタブで区切られておらず、項目がずれたためにエラーとなっていました。
タブで区切ってあげたら解決しました。
対象箇所は以下の2箇所です。
日付 | 銘柄コード |
---|---|
20150129 | 3901 |
20150129 | 6740 |
以上です。