検索
連載

ExcelデータをOracleに格納する3つの手法Excel‐Oracle連携(1)(1/3 ページ)

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena

はじめに

主な内容

--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データベースに格納可能 大量データ/ファイルからの一括ロード
OracleHTML DBを使用 Excelの表形式データを基に、Oracleデータベース内に表や簡易Webアプリケーションを作成可能、OracleClient不要 個人管理の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データを活用することはできませんが、OracleContent Management SDK(CMSDK、旧iFS)、Oracle XML DBリポジトリ(OracleXML 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のコマンドを発行できるツールもあります)。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

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

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

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る