2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] Autonomous DatabaseからGithub操作してみた(2022/04/23)

Last updated at Posted at 2022-04-23

はじめに

Autonomous DatabaseのDBMS_CLOUD_REPOパッケージを使用して、Githubに接続し、リポジトリの作成、表定義DDL文をリポジトリのファイルとして出力、さらにリポジトリ上のスクリプトファイルを直接Autonomous Databaseで実行してみた。

作業ステップ

  1. リポジトリ(Github)のアクセストークンを生成
  2. Autonomous Databaseでクレデンシャルの生成
  3. 表定義をエクスポート
  4. コードリポジトリのスクリプトをAutonomous Databaseで実行

リポジトリ(Github)のアクセストークンを生成

Githubにログインしアクセストークンを生成
https://github.com/settings/tokens
image.png

生成されたトークンをコピー

Autonomous Databaseでクレデンシャルの生成

「データベース・アクション」などでAutonomous Databaseに接続し、クレデンシャルを作成

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL (
    'GITHUB_CRED',
    '<GitHub Email Address>',
    '<GitHub Personal Access Token>');
END;
/

PL/SQL procedure successfully completed.

表定義をエクスポート

事前準備として表定義出力対象となる表の作成

CREATE TABLE persons(
    person_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(50) NOT NULL,
    last_name VARCHAR2(50) NOT NULL
);

Table PERSONS created.

DBMS_CLOUD_REPO パッケージを使用して、新しい Git Repo を作成、表定義DDLをファイルに出力

必要なRepoハンドルの JSON オブジェクトを初期化し、それを使って “BlogRepo” という名前の新しいリポジトリを作成し、 “Persons”表のメタデータをエクスポート

DECLARE
     repoHandle clob;
     repoName   clob := 'BlogRepo';
BEGIN
    repoHandle := DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
                    credential_name => 'GITHUB_CRED',
                    repo_name       => repoName,
                    owner           => '<GitHub Repo Owner>'
            );
    DBMS_OUTPUT.PUT_LINE(repoHandle);
    DBMS_CLOUD_REPO.CREATE_REPOSITORY(
         repo        => repoHandle,
         description => 'Blog example repo',
         private => TRUE
    );
    DBMS_CLOUD_REPO.EXPORT_OBJECT(
         repo => repoHandle,
         object_type => 'TABLE', --Object types supported by DBMS_METADATA
         object_name => 'persons',
         file_path   => 'BlogScript.sql'
    );
END;
/

PL/SQL procedure successfully completed.
Elapsed: 00:00:10.623

Github でリポジトリ、ファイルが作成されていることの確認

image.png

image.png

コードリポジトリのスクリプトをAutonomous Databaseで実行

事前準備として作成対象の表を削除

DROP TABLE persons purge;

Table PERSONS dropped.

DBMS_CLOUD_REPOの "INSTALL_FILE" プロシージャを実行

DBMS_CLOUD_REPOパッケージの "INSTALL_FILE" プロシージャを実行して、リポジトリから任意のスクリプト(ここでは先ほど作成した BlogScript.sql を使用)を取得し、Autonomous Database上で実行

DECLARE
     repoHandle clob;
     repoName     clob := 'BlogRepo';
BEGIN
    repoHandle := DBMS_CLOUD_REPO.INIT_GITHUB_REPO(
                    credential_name => 'GITHUB_CRED',
                    repo_name       => 'BlogRepo',
                    owner           => '<GitHub Repo Owner>'
            );
    DBMS_OUTPUT.PUT_LINE(repoHandle);
    DBMS_CLOUD_REPO.INSTALL_FILE(
        repo => repoHandle,
        file_path     => 'BlogScript.sql',
        stop_on_error => FALSE
  );
END;
/

PL/SQL procedure successfully completed.


desc persons

Name       Null?    Type         
---------- -------- ------------ 
PERSON_ID  NOT NULL NUMBER       
FIRST_NAME NOT NULL VARCHAR2(50) 
LAST_NAME  NOT NULL VARCHAR2(50) 

おわりに

Autonomous Databaseから直接コードリポジトリを操作できることがわかりました。

参考情報

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?