0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】OICのSFTP(File Server)を使ってCSVファイルをADBにインポートしてみる

Posted at

はじめに

今回はOracle Cloud Infrastructure(OCI)のOracle Integration Cloud(OIC)が
提供するSFTP(File Server)機能を使って、CSVファイルをAutonomous Database(ADB)に
インポートする方法を紹介します。

File ServerはOICが提供するSFTPサービスで、外部クライアントからOICにファイルを置き、
それを起点としてさまざまな処理に連携できる便利な機能です。

この記事ではSFTPへのファイルアップロードからOICを使用した
ADBへのデータ取り込みまでの一連の流れを簡潔にまとめています。

OICの基本的な操作、詳細な使い方はこちらのブログをご確認ください。
https://qiita.com/atwits/items/d05dfb1d8eecb3123e68
※OICの接続作成や統合作成の基本操作は上記ブログで解説していますので、
本記事では省略し、SFTP連携部分にフォーカスして説明します。

■検証の流れ
・OCI上のLinuxからOIC File ServerへSFTPでCSVファイルをアップロード
・OIC Integrationがスケジュール起動
・File Server(SFTP)上にあるCSVファイルを読み取り、ADBへINSERTする

■構成
image.png

■事前準備
・アカウント、コンパートメント、ポリシー、VCN等の基本設定
・Computeインスタンス作成(Oracle Linux等)
・OICインスタンス作成
・ADBインスタンス作成(Walletを事前にダウンロード)
・SFTPで利用するSSH鍵(後述)

■参考
・Oracle Integration チュートリアル
https://oracle-japan.github.io/ocitutorials/integration/
・ADBチュートリアル
https://oracle-japan.github.io/ocitutorials/adb/adb101-provisioning/


◆目次

  1. ADBの設定
  2. SSH鍵の作成
  3. OIC File Server(SFTP)の設定
  4. OICでSFTP接続の作成
  5. CSVファイルのアップロード
  6. Integrationの作成
  7. 動作テスト
  8. おわり

1. ADBの設定

ADB側に取り込み先テーブルを作成します。
※今回はtestスキーマ上にテーブルを作成しています。

CREATE TABLE TEST.TBL (
    ID NUMBER,
    NAME VARCHAR2(100)
);

確認用SQL

SELECT * FROM TEST.TBL;

2. SSH鍵の作成

・Linuxで以下を実行

ssh-keygen -t rsa -b 4096 -f oicfs_key

作成物
・oicfs_key(秘密鍵)
・oicfs_key.pub(公開鍵)

上記を手元に保存しておきます。


3. OIC File Server(SFTP)の設定

  1. SFTPの有効化

・OICインスタンスの詳細からファイル・サーバーの有効化を実行
image.png

・OICにログインし、左上メニューから[設定] - [ファイル・サーバ] - [設定]を選択
ステータスが起動になっていることを確認し、Host、IP、Portを書き留めておきます。
image.png

・認証タイプの変更
続いて、セキュリティの下の認証タイプをKey設定して右上の保存を実行します。
image.png

・公開鍵のアップロード
メニューの同じ階層にユーザーがあるので、そこから今回SFTPアクセスするユーザーの編集を実行します。
image.png

oicfs_key.pub(公開鍵)をアップロードします。
image.png

・ユーザーの有効化
最後にユーザーを有効化します。
image.png


4. OICでSFTP接続の作成

左上メニューから[設計] - [接続]を選択し、右上の作成ボタンを実行
image.png

・接続の作成
検索ボックスで絞り込みをし、FTPを選択します。
image.png

・名前等の項目を入力して作成
※ロールはスケジュール起動なのでトリガーにしています。
image.png

・SFTP接続情報の入力
ホスト名(またはIP)、ポート、OCIユーザを入力し、以下の項目を設定してください。
セキュリティ・ポリシー : FTP Public Key Authentication
Private Key File : oicfs_key(秘密鍵) のアップロード
image.png

入力が終わったら右上のテストボタンを押して、正常に完了したら保存ボタンで終了します。

ADBの接続作成についてこちらを参考に作成してください
https://qiita.com/atwits/items/d05dfb1d8eecb3123e68


5. CSVファイルのアップロード

Linuxにログインして今日の日付でテストデータを作成し、SFPTに転送します。

・ファイル作成

cat << EOF > test_20251204.csv
id,name
1,aaaaa
2,bbbbb
3,ccccc
EOF

SFTP接続
sftp -i oicfs_key -P 10170 ユーザー名@ホスト名

sftp -i oicfs_key -P 10170 "ユーザ名"@fs-oic01-tenant-nt.integration.ap-tokyo-1.ocp.oraclecloud.com

アップロード

put test_20251204.csv

6. Integrationの作成

左上メニューから[設計] - [統合]を選択し、右上の作成ボタンを実行
スケジュールの統合作成を実行します。

■全体の構成
スケジューラのフローは以下の図の通りです。
image.png

[1]スケジュール(起点)からプラス(+)ボタンでSFTP接続を選択すると
[2]マップが自動的に生成され、[3]呼び出し(SFTP)の設定画面になります。
[3]のところでプラス(+)ボタンを押してADB接続を選択すると同様に
[4]マップが自動的に生成され、[5]呼び出し(ADB)の設定画面になります。

◆各項目の設定
[2] では以下のように設定します。
Start TimeからFilenameを紐づけ、Filenameを加工します。
image.png

式は以下を設定

concat( "test_", replace( substring( Start Time, 1.0, 10.0), "-", ""), ".csv")

例:2025-12-04 → test_20251204.csv
これで先程SFTPアップロードしたファイル名になります。

[3] では以下のように設定します。

・エンドポイント名(任意)をつけて続行
image.png

・チェックせず続行
image.png

・以下の項目を入力
操作の選択: ファイルの読み取り
転送モードの選択: バイナリ
入力ディレクトリ: 対象のディレクトリ /home/users/[ユーザ名]/
ファイル名: *任意([2]で設定したFilenameに上書きされるのでなんでも構いません)
image.png

・はい、CSVを選択
image.png

・以下の項目を入力
選択したファイル名: test_20251204.csvをドラグ&ドロップ
レコード名の入力: 任意(Record)
レコードセット名の入力: 任意(Recordset)
フィールドの区切り文字の選択: Commna(,)
image.png

・確認して終了
image.png

[5] では以下のように設定します。([4]前に設定)

・詳細については前述で紹介したブログを確認してください。
image.png

・TESTスキーマ、TBLを選択して終了させます。
image.png

[4] では以下のように設定します。

・CSVファイルとADBのテーブル項目とマッピング
image.png

最後に保存したら、設定は全て終了となります。


7. 動作テスト

・統合をアクティブ化し、即時実行します。

image.png

・ADBで確認

SELECT * FROM TEST.TBL;

image.png

正常に取り込まれていれば成功です。


おわり

今回はOICのSFTP(File Server)機能を利用し、CSVファイルをADBに取り込む処理を構築しました。
File Serverは準備こそ必要ですが、一度設定してしまえばバッチ処理にも利用でき、非常に便利です。
参考になれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?