こんにちは、那須です。
最近、Oracle Cloud Infrastructure(OCI)を触ることがあったので、備忘も兼ねて記事として公開します。何をやったかというと、OCIのサービスの1つであるAutonomous Transaction Processing(ATP)を作成して、そこにローカル保存していたデータをインポートする、という流れです。
※Oracle公式ドキュメント等にはデータをロードするという表現が使われていますが、個人的にインポートするという表現の方がしっくりくるので、この記事ではインポートで統一します。
ATPはAutonomous Database(ADB)の1つで、さまざまな用途のデータベースとして使われます。ADBの詳細については、Oracleさんから公開されている紹介資料をご参照ください。
簡単に説明すると、今まで誰かがDB運用業務として実施していたタスクを、Oracleさんがやってくれるという素晴らしいサービスです。物理サーバでの異常検知時の対応はもちろん、既知の不具合が発生すればその修正、自動サービスリクエスト(SR)の起票、バックアップ管理、オートスケーリング、クエリの最適化などをもう運用担当者が気にする必要がなくなります。まだそのような状況になったことがないのでわかりませんが、今までやっていたけどやらなくても良くなるというのはものすごく嬉しいことですね。
そんなATPにデータをインポートする機会があったのですが、かなり楽にできたのでご紹介します。よくあるのは、Data Pump等でインポートするやり方ですが、今回ご紹介するやり方はOCIコンソールからの操作だけで完結します。
実際の流れ
まずデータをインポートするATPを準備します。コンソールで対象のATPの詳細を表示し、ツールタブにあるデータベース・アクションを開くを押します。
ログイン画面に切り替わりますので、ATP作成時に設定したデータベースのユーザ名とパスワードでサインインします。
起動パッドという画面に移りますので、そこでデータ・ロードをクリックします。
今回はローカルにあるExcelファイルのデータをインポートしたいので、以下の画像のように選択して次に進みます。他のデータベースやクラウドストレージからデータを入れることもできるようです。Excelファイルのままインポートできるのは楽でいいですね。
↓こんな画面になりますので、インポートするファイルを準備しましょう。
インポートするデータはExcel(xlsxファイル)で準備しました。1行目にカラム名、2行目以降に実際のデータを入れておきます。今回はこの記事での紹介用に以下の画像のようなデータを準備しました。
IDは数値、NAMEとGENDERは文字列、CREATED_ATは日付データが入っていますね。
上記で準備したファイルをドラッグ&ドロップします。ちなみに、10MB以上のExcelデータだと何度やってもうまくアップロードできませんでした。その場合は、ExcelファイルをCSVに変換してからアップロードするとうまくいきますよ。
アップロードできたら、以下の画像の部分をクリックして内容を調整していきましょう。
一番上にテーブル名があるので、これを修正しましょう。Excelファイルをアップロードした場合は、シート名がそのまま入っています。ですので、アップロードする前にシート名をテーブル名に修正しておけばこの手間を省けますね。あとは、無効データをNULL変換するかどうかや、データ型の修正をおこないます。データ型はアップロードされたファイルを見て自動で提案してくれるので、ほとんどの場合は何もしなくても期待するデータ型になっていると思います。
上記の調整が完了したら、開始ボタンを押しましょう。これで実際のデータベースへのインポートが始まります。
今回は10件しかないデータだったのですぐに完了しました。約65万件のデータが入ったCSVファイルをインポートした時は3分程度で完了しました。これでデータのインポートは完了です。
インポートしたデータの確認
起動パッドの画面でSQLをクリックします。
クエリを実行できる画面が開きますので、ここでデータが問題なく入っていることを確認できます。
さいごに
今回はOCIのATPにデータをインポートしてデータを確認するところまでをご紹介しました。Data Pump等のCLIで実施することを考えると、比較的簡単なのでエンジニアじゃない方でも手順さえあれば簡単に実施できそうですね。
ADBは今回ご紹介した内容以外にも、REST APIをデプロイしたり、モデリングツールが付属していたり、ADBのデータを使ったWebアプリを簡単に構築できるようになっています。これまでのOracleDBやその周りのシステムを準備する時にかかっていた時間や手間が大幅に少なくできるようになっているので、皆さんもぜひADBを触ってみてください!
今は自社事業ではOCIは利用していませんが、共創事業ではOracleを使っている案件があります。AWSと記載がありますが一番近い募集が↓こちらになりますので、今後OracleDBやOCIにも触れてみたい方はぜひ話を聞いていただけると嬉しいです!