回答編集履歴

2

修正

2015/08/13 02:27

投稿

退会済みユーザー
test CHANGED
@@ -176,12 +176,6 @@
176
176
 
177
177
 
178
178
 
179
- # 元ファイルを削除
180
-
181
- rm -f KEN_ALL.CSV
182
-
183
-
184
-
185
179
  echo 'Importing to MySQL'
186
180
 
187
181
  mysqlimport -s -u ${DBUSER} -p${DBPASS} --local --delete --fields-terminated-by=, --fields-enclosed-by="\"" --fields-escaped-by="\\" --lines-terminated-by="\r\n" ${DBNAME} mst_address.csv;

1

追記

2015/08/13 02:27

投稿

退会済みユーザー
test CHANGED
@@ -79,3 +79,123 @@
79
79
 
80
80
 
81
81
  利用データはこれ[郵便番号データダウンロード](http://www.post.japanpost.jp/zipcode/download.html)
82
+
83
+
84
+
85
+ ###テーブル定義
86
+
87
+ ```sql
88
+
89
+ CREATE TABLE `mst_address` (
90
+
91
+ `officialCode` char(11) NOT NULL DEFAULT '' COMMENT '全国地方公共団体コード(JIS X0401、X0402)',
92
+
93
+ `postalCode5` char(5) NOT NULL DEFAULT '' COMMENT '(旧)郵便番号(5桁)',
94
+
95
+ `postalCode7` char(7) NOT NULL DEFAULT '' COMMENT '郵便番号(7桁)',
96
+
97
+ `kana_pref` varchar(20) NOT NULL COMMENT '都道府県名(カタカナ)',
98
+
99
+ `kana_city` varchar(40) NOT NULL COMMENT '市区町村名(カタカナ)',
100
+
101
+ `kana_town` varchar(40) NOT NULL COMMENT '町域名(カタカナ)',
102
+
103
+ `pref` varchar(20) NOT NULL COMMENT '都道府県名',
104
+
105
+ `city` varchar(40) NOT NULL COMMENT '市区町村名',
106
+
107
+ `town` varchar(40) NOT NULL COMMENT '町域名',
108
+
109
+ `flag_doubleCode` tinyint(1) NOT NULL COMMENT '一町域が二以上の郵便番号で表される場合の表示 (注3) (「1」は該当、「0」は該当せず)',
110
+
111
+ `flag_banchi` tinyint(1) NOT NULL COMMENT '小字毎に番地が起番されている町域の表示 (注4) (「1」は該当、「0」は該当せず)',
112
+
113
+ `flag_chome` tinyint(1) NOT NULL COMMENT '丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)',
114
+
115
+ `flag_double_area` tinyint(1) NOT NULL COMMENT '一つの郵便番号で二以上の町域を表す場合の表示 (注5) (「1」は該当、「0」は該当せず)',
116
+
117
+ `flag_update` int(1) NOT NULL COMMENT '更新の表示(注6)(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))',
118
+
119
+ `flag_update_reason` int(1) NOT NULL COMMENT '変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止(廃止データのみ使用))',
120
+
121
+ KEY `postalCode7` (`postalCode7`),
122
+
123
+ KEY `postalCode5` (`postalCode5`)
124
+
125
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
126
+
127
+ ```
128
+
129
+ ```sql
130
+
131
+ CREATE TABLE `mst_address_mini` (
132
+
133
+ `officialCode` int(5) unsigned zerofill NOT NULL COMMENT '全国地方公共団体コード(JIS X0401、X0402)',
134
+
135
+ `pref` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '都道府県名',
136
+
137
+ `city` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '市区町村名',
138
+
139
+ PRIMARY KEY (`officialCode`)
140
+
141
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
142
+
143
+ ```
144
+
145
+ ###マスターデータ更新用スクリプト
146
+
147
+ ```bash
148
+
149
+ #!/bin/bash
150
+
151
+
152
+
153
+ DBUSER=
154
+
155
+ DBPASS=
156
+
157
+ DBNAME=
158
+
159
+
160
+
161
+ echo "Downloading..."
162
+
163
+ wget -q http://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip
164
+
165
+
166
+
167
+ echo 'Melting...'
168
+
169
+ unzip -o -q ken_all.zip
170
+
171
+
172
+
173
+ echo "Convert SJIS to UTF8"
174
+
175
+ nkf -w KEN_ALL.CSV > mst_address.csv
176
+
177
+
178
+
179
+ # 元ファイルを削除
180
+
181
+ rm -f KEN_ALL.CSV
182
+
183
+
184
+
185
+ echo 'Importing to MySQL'
186
+
187
+ mysqlimport -s -u ${DBUSER} -p${DBPASS} --local --delete --fields-terminated-by=, --fields-enclosed-by="\"" --fields-escaped-by="\\" --lines-terminated-by="\r\n" ${DBNAME} mst_address.csv;
188
+
189
+ mysql -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "TRUNCATE mst_address_mini;INSERT INTO mst_address_mini SELECT officialCode, pref, city FROM mst_address GROUP BY officialCode"
190
+
191
+
192
+
193
+ # CSV削除
194
+
195
+ rm -f KEN_ALL.CSV
196
+
197
+ rm -f mst_address.csv
198
+
199
+ rm -f ken_all.zip
200
+
201
+ ```