Excel‐Oracle連携(1) Page 1/3

ExcelデータをOracleに格納する3つの手法

日本オラクル
宮本 尚志
2005/7/8

企業の部門内に蓄積された大量のExcelデータをデータベースで管理したい。あるいは、Excelで作成した業務書類からシステムに手作業でデータ入力する工数を削減したい。このようなニーズに応えるべく、OracleデータベースにはExcelからOracleへのさまざまな連携機能が備わっている。(編集部)

はじめに

主な内容
--Page 1--
はじめに
ExcelとOracleの連携パターン
SQL*Loaderを使用する方法
--Page 2--
Oracle HTML DBを使用する方法
--Page 3--
Oracle Generic Connectivityを使用する方法
まとめ

 OracleデータベースとExcelを組み合わせれば、Excelで入力したデータをOracleデータベースに格納したり、Oracleデータベース内のデータをExcelで参照、変更することができます。小規模なシステムでは、Excelをフロントアプリケーションとして使用することで、ユーザー・インターフェイスの開発を最小限に抑えられますし、利用する側も使い慣れたExcelのインターフェイスを使用できます。また、データ量や利用者数の拡大に伴い、データをExcelで管理するのが困難になることもあります。そのような場合には、ExcelのデータをOracleデータベースに移すことも可能です。

 本連載では、ExcelとOracleデータベースを連携させる方法にどのようなものがあるのか紹介します。第1回の本記事では、ExcelデータをOracleデータベースに格納する方法について取り上げます。

ExcelとOracleの連携パターン

 ExcelデータをOracleデータベースに格納する方法は数多くあります。表1にそれらの方法をまとめました。それぞれに特徴がありますので、用途に合わせて使い分けることになります。

連携パターン メリット 主な用途
SQL*Loaderを使用 大量のCSVファイルから高速にデータをOracleデータベースに格納可能 大量データ/ファイルからの一括ロード
Oracle HTML DBを使用 Excelの表形式データを基に、Oracleデータベース内に表や簡易Webアプリケーションを作成可能、Oracle Client不要 個人管理のExcelファイルからのデータロード、Webアプリケーションへの移行
Oracle Generic Connectivityを使用 Excel(.xls)ファイル内の表形式データを外部表のようにOracleデータベースから使用可能 複数人で共有しているExcelファイルからのデータロード
KeySQLを使用 Oracleデータベースに対するExcelからのINSERTの設定をGUIで行える マスタ表のメンテナンス
VBAでODBCなどを使いINSERT文発行 VBAのコーディング次第で柔軟な処理が可能 Excelを利用した業務アプリケーション
ExcelデータをXML化してOracleデータベースに格納 表形式でないExcelデータをOracleに格納可能、Oracle Client不要 表形式にしにくいデータのOracleデータベースへの保存
表1 ExcelデータをOracleデータベースに格納する方法

 本記事では、このうちSQL*Loader、Oracle HTML DB、Oracle Generic Connectivityについて紹介します。KeySQLを使う方法とODBCなどを使用する方法については、今後の連載で紹介します。ExcelデータをXML化してOracleデータベースに格納する方法については、特集記事「ExcelデータをOracleに格納する裏技」を参照してください。

 また、本連載では触れませんが、Excel(.xls)ファイルをバイナリファイルとしてデータベースのBLOB型の列に格納する方法もあります。その場合、Oracleデータベース側でExcelデータを活用することはできませんが、Oracle Content Management SDK(CMSDK、旧iFS)、Oracle XML DBリポジトリ(Oracle XML DB)といった機能を使用すれば、Oracleデータベースをファイルサーバとして使用できます。Oracleデータベースを使用したファイル管理アプリケーションも数多く存在するので、それらを利用してもExcelファイルなどをバイナリファイルとしてOracleデータベースに格納することが可能です。

SQL*Loaderを使用する方法

 SQL*Loaderは、外部ファイルのデータをOracleデータベースの表に取り込むユーティリティで、Oracleデータベースに標準で付属しています。このツールにより、CSVファイルからデータを読み込み、Oracleデータベースの表に書き込むことができます。データベース・サーバ、またはOracle Clientをインストールしたクライアント端末から使用可能です。

 SQL*LoaderではSQL*PlusなどからINSERT処理をするよりも高速にデータをテーブルに書き込むことが可能です。従って、大量データを一度にロードするバッチ処理には最適です。

手順

 SQL*Loader自体はコマンドライン・ユーティリティであり、以下のようなコマンドを実行することでデータをロードします(Oracle Enterprise Managerなど、GUI操作でSQL*Loaderのコマンドを発行できるツールもあります)。

C:\> sqlldr scott/tiger control=test.ctl direct=true parallel=true

 このコマンドを見ても分かるように、どの表にどんなデータをロードするかは、制御ファイル(Oracleデータベースの制御ファイルとは異なります)という別のファイルに記述しておきます。ここでは、test.ctlというファイルが制御ファイルで、その中身は以下のようなものです。

LOAD DATA
INFILE 'test.csv'
INTO TABLE anken
APPEND
FIELDS TERMINATED BY ',' trailing nullcols
(案件番号,担当営業,顧客社名,金額,提案商品,受注確度,状態,受失注日 "to_date(:受失注日, 'MM\"月\"DD\"日\"')")
リスト1 SQL*Loader用の制御ファイル

 ここでは、カンマで区切られたtest.csvの中身をanken表にロードする、という内容を記述しています。test.csvは以下のようなファイルです。

1,大森,悠久電子工業(株),300000,OR-002,20,提案中,
2,篠崎,黒山興業(株),500000,OR-004,40,提案中,
3,十川,(株)古代歴史社,200000,FZ-017,100,受注,6月20日
4,門脇,(有)みずしま酒造,800000,PC-006,10,提案前,
5,春原,中央データ通信(株),150000,FZ-014,60,見積提出,
6,飯岡,(株)ホテル志正,250000,FZ-021,80,選定待ち,
7,宮本,(株)ORZジャパン,150000,FZ-014,0,失注,6月15日
8,渕澤,不離商事(株),800000,PC-006,40,提案中,
9,十川,ハイワシ産業(株),600000,PC-004,20,提案中,
10,宮本,第一健康食品(株),300000,OR-002,100,受注,6月29日
11,飯岡,(株)蝮谷,200000,FZ-017,40,提案中,
リスト2 SQL*Loaderで読み込むCSVファイル

 このように、CSVファイル、制御ファイルを用意すれば、簡単なコマンドでデータをOracleデータベースにロードできます。

 制御ファイルの記述が難しい、と思う方もいるかもしれませんが、制御ファイルをGUI操作で生成可能なツール(Oracle Warehouse Builderなど)を利用すれば、制御ファイルを手入力で作成する必要はありません。

 もっと簡単にExcelデータをOracleデータベースに格納したいという場合は、次に紹介するOracle HTML DBを使う方法があります。(次ページに続く)

  1/3

 Index
Excel‐Oracle連携(1)
ExcelデータをOracleに格納する3つの手法
Page 1
・はじめに
・ExcelとOracleの連携パターン
・SQL*Loaderを使用する方法
  Page 2
・Oracle HTML DBを使用する方法
  Page 3
・Oracle Generic Connectivityを使用する方法
・まとめ


Excel‐Oracle連携

TechTargetジャパン

Database Expert フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH