拙著『Webアプリケーション構築入門』では、ウェブアプリの簡単な例として、郵便番号検索システムを、Javaを使って構築しています。
ウェブアプリに関してはもう1冊著書があります。『Microsoft Visual Web Developer 2008 Express Edition入門』です。こちらはASP.NET(C#あるいはVisual Basic)なのですが、『Webアプリケーション構築入門』で作成した程度の簡単な郵便番号検索システムなら、こちらのほうが簡単に構築できます。
しかし、郵便番号データをSQL Server Express Editionで使えるようにするのが少し面倒なので、その方法を紹介します。(この点に関して言えば、SQL Server Express EditionよりもMySQLのほうがはるかに簡単です。)
まず、郵便番号データをダウンロードします。「読み仮名データの促音・拗音を小書きで表記するもの」の「全国一括」でいいでしょう。ダウンロードしたファイルを展開し、テキストファイル内の二重引用符を削除し、カンマをタブに置き換えておきます(後述のformat.fmtの「\t」を「,」にするなら、カンマの変換は実は不要です)。
Visual Web Developer(VWD, Visual Studioのウェブアプリ用無償版)上では、大量のデータを読み込むためのBULK INSERT文が(たぶん)使えないので、SQL Server Management Studioでデータベースとテーブルを作り、それをVWDで使うことにします。
データベースを作ります。

データベース名は「mydb」にしましょう。

GUIでテーブルを作るのは面倒なので、SQLを使います。

実行するSQLはこんな感じです。
USE [mydb]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[zips](
[jis] [char](10) NOT NULL,
[old_zip] [char](5) NOT NULL,
[zip] [char](7) NOT NULL,
[addr1_ruby] [ntext] NOT NULL,
[addr2_ruby] [ntext] NOT NULL,
[addr3_ruby] [ntext] NOT NULL,
[addr1] [ntext] NOT NULL,
[addr2] [ntext] NOT NULL,
[addr3] [ntext] NOT NULL,
[establishment_ruby] [ntext] NOT NULL,
[establishment] [ntext] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[zips] ADD CONSTRAINT [DF_zips_jis] DEFAULT ('') FOR [jis]
GO
ALTER TABLE [dbo].[zips] ADD CONSTRAINT [DF_zips_addr1_ruby] DEFAULT ('') FOR [addr1_ruby]
GO
ALTER TABLE [dbo].[zips] ADD CONSTRAINT [DF_zips_addr1] DEFAULT ('') FOR [addr1]
GO
ALTER TABLE [dbo].[zips] ADD CONSTRAINT [DF_establishment_ruby] DEFAULT ('') FOR [establishment_ruby]
GO
ALTER TABLE [dbo].[zips] ADD CONSTRAINT [DF_establishment] DEFAULT ('') FOR [establishment]
GO
貼り付けて、右クリック→実行。

できたテーブルは「デザイン」で確認できます。

実は、先にあげたSQL文は、GULで作ったテーブルを「スクリプト化」したものです。(GUIは説明には不向きです。)

テーブルができたので、テキストファイルのデータをテーブルにロードします。
まず、テキストファイルとテーブルの対応関係を記述したファイルformat.fmtを用意します。(ファイルの書き方・SQLCHAR等について)
format.fmt 10.0 10 1 SQLCHAR 0 10 "\t" 1 jis "" 2 SQLCHAR 0 5 "\t" 2 old_zip "" 3 SQLCHAR 0 7 "\t" 3 zip "" 4 SQLCHAR 0 500 "\t" 4 addr1_ruby "" 5 SQLCHAR 0 500 "\t" 5 addr2_ruby "" 6 SQLCHAR 0 500 "\t" 6 addr3_ruby "" 7 SQLCHAR 0 500 "\t" 7 addr1 "" 8 SQLCHAR 0 500 "\t" 8 addr2 "" 9 SQLCHAR 0 500 "\t" 9 addr3 "" 10 SQLCHAR 0 500 "\r\n" 0 dummy ""
BULK INSERT文で郵便番号データを読み込みます。(参考:BULK INSERT文の詳細)。
BULK INSERT [dbo].[zips] FROM 't:\KEN_ALL_CP932.TSV' WITH(FORMATFILE='t:\format.fmt',CODEPAGE=932)

データを読み込み終わったら、データベースを「デタッチ」します。


このデータベースのファイルmydb.mdfをVWDのソリューション・エクスプローラでフォルダApp Dataにドラッグ&ドロップすれば、ウェブアプリから利用できます。

完成したデータベースのファイルmydb.mdf。
「郵便番号検索システムの作成(ASP.NETチュートリアル)」に続く
コメントする