本稿では国税庁から毎月リリースされている全国の法人番号を Oracle Database へロードし、更に毎日リリースされている差分データを使って最新版へ更新する方法について説明します。
全国に約 466 万件もある法人のデータは CSV データにすると 1ギガバイト以上に達するのでテーブルへ手際よく格納する為には、幾つかの工夫を組み合わせて対処する必要が有ります。
本稿では、作業順に内容を3編に分け、どのような工夫が有効なのか詳しく説明していきます。
記事 | 作業内容 |
---|---|
1/3 | データ提供サイトからの書庫ファイルのダウンロード及びCSVファイル抽出 |
2/3 | オリジナルデータをロードし易い形式に整えるユーティリティ作成と変換 |
3/3 | テーブル作成等、ロードに必要な資源の構築とロード |
尚、記事の内容は1年以上のプログラミング経験と、1年以上の Oracle DB 管理者としての経験のある読者を対象としています。
次に挙げたものを事前に準備して下さい。リンクをクリックすると別なサイトへ移動しますのでご了承願います。
用意するもの | 入手先 |
---|---|
Firefox ブラウザ | mozilla のサイト |
Python 3 言語処理系 | python.org のサイト |
Mozilla GeckoDriver | Selenium WebDriver のサイト |
弊社提供資源 | 書庫ファイル
※本稿で提供するソフトウエアの著作権は株式会社プラムシックスが所有します。このソフトウエアを取り扱う際は MIT License に定められた条項を遵守するものとします。
|
pip install --upgrade pip pip install selenium
準備作業は色々手間が掛かるかと思いますが、準備が完了すると CSV ファイル抽出は python プログラムによって一気に進める事が出来ます。次の手順を実施して下さい。
cd /d 資源フォルダ
python dl_houjin_code.py
Downloading HOUJIN_BANGOU zenken files... Downloading HOUJIN_BANGOU sabun files... Unzipping HOUJIN_BANGOU files... Erasing HOUJIN_BANGOU files... Erasing PGP signature files... Completed successfully.
dir *.csv
ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 0CFD-95AA です c:\github\houjin_bangou のディレクトリ 2018/10/10 15:51 39,254,293 01_hokkaido_all_20180928.csv 2018/10/10 15:51 6,667,187 02_aomori_all_20180928.csv 2018/10/10 15:51 5,816,444 03_iwate_all_20180928.csv 2018/10/10 15:51 13,882,800 04_miyagi_all_20180928.csv 2018/10/10 15:51 5,263,552 05_akita_all_20180928.csv 2018/10/10 15:51 5,766,119 06_yamagata_all_20180928.csv 2018/10/10 15:51 12,656,819 07_fukushima_all_20180928.csv 2018/10/10 15:51 15,033,060 08_ibaraki_all_20180928.csv 2018/10/10 15:51 12,348,677 09_tochigi_all_20180928.csv 2018/10/10 15:51 12,533,447 10_gunma_all_20180928.csv 2018/10/10 15:51 41,687,501 11_saitama_all_20180928.csv 2018/10/10 15:51 35,625,731 12_chiba_all_20180928.csv 2018/10/10 15:51 205,131,783 13_tokyo_all_20180928.csv 2018/10/10 15:52 60,591,447 14_kanagawa_all_20180928.csv 2018/10/10 15:52 12,820,351 15_niigata_all_20180928.csv 2018/10/10 15:52 5,849,497 16_toyama_all_20180928.csv 2018/10/10 15:52 7,120,432 17_ishikawa_all_20180928.csv 2018/10/10 15:52 5,127,617 18_fukui_all_20180928.csv 2018/10/10 15:52 5,743,096 19_yamanashi_all_20180928.csv 2018/10/10 15:52 13,321,342 20_nagano_all_20180928.csv 2018/10/10 15:52 11,815,109 21_gifu_all_20180928.csv 2018/10/10 15:52 20,662,288 22_shizuoka_all_20180928.csv 2018/10/10 15:52 45,279,481 23_aichi_all_20180928.csv 2018/10/10 15:52 8,956,472 24_mie_all_20180928.csv 2018/10/10 15:52 6,687,279 25_shiga_all_20180928.csv 2018/10/10 15:52 18,667,061 26_kyoto_all_20180928.csv 2018/10/10 15:52 74,620,707 27_osaka_all_20180928.csv 2018/10/10 15:52 32,400,274 28_hyogo_all_20180928.csv 2018/10/10 15:52 6,356,962 29_nara_all_20180928.csv 2018/10/10 15:52 5,122,643 30_wakayama_all_20180928.csv 2018/10/10 15:52 3,276,224 31_tottori_all_20180928.csv 2018/10/10 15:52 3,803,937 32_shimane_all_20180928.csv 2018/10/10 15:52 11,954,262 33_okayama_all_20180928.csv 2018/10/10 15:52 18,749,250 34_hiroshima_all_20180928.csv 2018/10/10 15:52 7,046,676 35_yamaguchi_all_20180928.csv 2018/10/10 15:52 5,244,523 36_tokushima_all_20180928.csv 2018/10/10 15:52 6,530,340 37_kagawa_all_20180928.csv 2018/10/10 15:52 8,659,575 38_ehime_all_20180928.csv 2018/10/10 15:52 4,300,604 39_kochi_all_20180928.csv 2018/10/10 15:52 33,813,288 40_fukuoka_all_20180928.csv 2018/10/10 15:52 4,038,123 41_saga_all_20180928.csv 2018/10/10 15:52 6,924,889 42_nagasaki_all_20180928.csv 2018/10/10 15:52 11,518,386 43_kumamoto_all_20180928.csv 2018/10/10 15:52 7,815,583 44_oita_all_20180928.csv 2018/10/10 15:52 6,389,928 45_miyazaki_all_20180928.csv 2018/10/10 15:52 9,783,792 46_kagoshima_all_20180928.csv 2018/10/10 15:52 9,203,517 47_okinawa_all_20180928.csv 2018/10/10 15:52 2,901,278 99_kokugai_all_20180928.csv 2018/10/10 15:52 1,015,174 diff_20181003.csv 2018/10/10 15:52 1,190,133 diff_20181004.csv 2018/10/10 15:52 956,361 diff_20181005.csv 2018/10/10 15:52 1,065,040 diff_20181009.csv 2018/10/10 15:52 1,304,358 diff_20181010.csv 53 個のファイル 920,294,712 バイト 0 個のディレクトリ 97,685,651,456 バイトの空き領域
提供された python プログラム(ファイル名:dl_houjin_code.py)は次の操作をユーザに代わり実行してくれます。
上記までの作業により国税庁からリリースされているオリジナルのデータを最新版も含めて一括で入手することが出来ます。
但し、オリジナル・データはそのままでは Oracle Database のテーブルにインポートすることが出来ません。データの表現形式がインポートする為のユーティリティである、SQL*Loader のインターフェース仕様と互換性が無い為です。
そこでインターフェース仕様に適合させるための変換プログラムが必要となります。