こんにちは。デジタルイノベーション推進室の戦闘員Oです。最近は開発にAmazon Q Developerを取り入れている方も多いと思います。そんな中、以下の記事を見つけましたので実際にやってみようと思います。
Amazon Q Developer で組み込み SQL を Oracle から PostgreSQL に変換可能に
VSCodeを利用して、Amazon Q Developerの環境づくり、サンプルのJavaファイル内にあるOracle用SQLソースコードをPostgreSQL用に変換してみます。
目次
- VSCodeにAmazon Qのアドオンをインストール
- AWS Builder ID(無料)を作成しVSCodeにアクセス許可
- Amazon Q DeveloperにサンプルのJavaファイルを変換してもらう
- さいごに
1.VSCodeにAmazonQのアドオンをインストール
では、さっそくVSCodeを開いて、ExtentionからAmazon Qのアドオンをインストールしましょう。

ポップアップが表示されますが、“Trust Publisher & install”を押下いただくとインストールされます。

2. AWS Builder ID(無料)を作成しVSCodeにアクセス許可
VSCodeの左にAmazon Qのマークが出てきますので使えるようにしましょう。“Personal account”をクリックし、無料版で始めます。

AWS BuilderのWebサイトを開くため下記ポップアップは”Open”を押してください。

AWS Builder IDが無い方は新規に作成してください。

そのままログインいただき、下記のアクセス許可をしてください。

アクセス許可されると以下の画面が表示されます。

VSCode側にチャット欄が表示されます。念のため日本語ができるか聞いてみました。日本語対応されているようでありがたいです。

3. Amazon QにサンプルのJavaファイルを変換してもらう
では、本題のJavaソースコードに記載されているOracle専用SQLをPostgreSQL用に変換してみましょう。
変換前ソースコード” OracleJDBCDemo.java”
import java.sql.Connection; |
import java.sql.DriverManager; |
import java.sql.PreparedStatement; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.sql.Statement; |
public class OracleJDBCDemo { |
// JDBC接続用の情報 |
private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:xe"; // データベースURL |
private static final String USER = "your_username"; // ユーザー名 |
private static final String PASS = "your_password"; // パスワード |
public static void main(String[] args) { |
Connection connection = null; |
try { |
// JDBCドライバのロード |
Class.forName("oracle.jdbc.driver.OracleDriver"); |
// データベースに接続 |
connection = DriverManager.getConnection(DB_URL, USER, PASS); |
// テーブルの作成 |
createTable(connection); |
// データの挿入 |
insertData(connection, 1, "Alice"); |
insertData(connection, 2, "Bob"); |
// データの取得 |
fetchData(connection); |
} catch (SQLException | ClassNotFoundException e) { |
e.printStackTrace(); |
} finally { |
// リソースのクリーンアップ |
try { |
if (connection != null) { |
connection.close(); |
} |
} catch (SQLException e) { |
e.printStackTrace(); |
} |
} |
} |
private static void createTable(Connection connection) throws SQLException { |
String createTableSQL = "CREATE TABLE persons (" + |
"id NUMBER PRIMARY KEY, " + |
"name VARCHAR2(50)" + |
")"; |
Statement stmt = connection.createStatement(); |
stmt.execute(createTableSQL); |
System.out.println("Table created successfully."); |
} |
private static void insertData(Connection connection, int id, String name) throws SQLException { |
String insertSQL = "INSERT INTO persons (id, name) VALUES (?, ?)"; |
PreparedStatement pstmt = connection.prepareStatement(insertSQL); |
pstmt.setInt(1, id); |
pstmt.setString(2, name); |
pstmt.executeUpdate(); |
System.out.println("Data inserted successfully: " + name); |
} |
private static void fetchData(Connection connection) throws SQLException { |
String selectSQL = "SELECT * FROM persons"; |
Statement stmt = connection.createStatement(); |
ResultSet rs = stmt.executeQuery(selectSQL); |
System.out.println("Fetching data from the table:"); |
while (rs.next()) { |
int id = rs.getInt("id"); |
String name = rs.getString("name"); |
System.out.println("ID: " + id + ", Name: " + name); |
} |
} |
} |
チャット欄に「@OracleJDBCDemo.java をPostgreSQL用に変更してください」と入力します。"@ファイル名"でファイルを指定できます。

Amazon Q Developerが変換してくれました。変換概要もチャット欄に表示してくれます。
チャット欄の回答
OracleのJDBCコードをPostgreSQL用に変更しました。主な変更点:
・クラス名: OracleJDBCDemo → PostgreSQLJDBCDemo
・JDBC URL: jdbc:oracle:thin:@localhost:1521:xe → jdbc:postgresql://localhost:5432/your_database
・ドライバクラス: oracle.jdbc.driver.OracleDriver → org.postgresql.Driver
・データ型: NUMBER → SERIAL 、 VARCHAR2(50) → VARCHAR(50)
PostgreSQLを使用する際は、PostgreSQL JDBCドライバ(postgresql-xx.x.jar)をクラスパスに追加する必要があります。 |
親切な解説と供にコードを変換してくれました。
変換後ソースコード” OracleJDBCDemo.java”
import java.sql.Connection; |
import java.sql.DriverManager; |
import java.sql.PreparedStatement; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.sql.Statement; |
public class PostgreSQLJDBCDemo { |
// JDBC接続用の情報 |
private static final String DB_URL = "jdbc:postgresql://localhost:5432/your_database"; // データベースURL |
private static final String USER = "your_username"; // ユーザー名 |
private static final String PASS = "your_password"; // パスワード |
public static void main(String[] args) { |
Connection connection = null; |
try { |
// JDBCドライバのロード |
Class.forName("org.postgresql.Driver"); |
// データベースに接続 |
connection = DriverManager.getConnection(DB_URL, USER, PASS); |
// テーブルの作成 |
createTable(connection); |
// データの挿入 |
insertData(connection, 1, "Alice"); |
insertData(connection, 2, "Bob"); |
// データの取得 |
fetchData(connection); |
} catch (SQLException | ClassNotFoundException e) { |
e.printStackTrace(); |
} finally { |
// リソースのクリーンアップ |
try { |
if (connection != null) { |
connection.close(); |
} |
} catch (SQLException e) { |
e.printStackTrace(); |
} |
} |
} |
private static void createTable(Connection connection) throws SQLException { |
String createTableSQL = "CREATE TABLE persons (" + |
"id SERIAL PRIMARY KEY, " + |
"name VARCHAR(50)" + |
")"; |
Statement stmt = connection.createStatement(); |
stmt.execute(createTableSQL); |
System.out.println("Table created successfully."); |
} |
private static void insertData(Connection connection, int id, String name) throws SQLException { |
String insertSQL = "INSERT INTO persons (id, name) VALUES (?, ?)"; |
PreparedStatement pstmt = connection.prepareStatement(insertSQL); |
pstmt.setInt(1, id); |
pstmt.setString(2, name); |
pstmt.executeUpdate(); |
System.out.println("Data inserted successfully: " + name); |
} |
private static void fetchData(Connection connection) throws SQLException { |
String selectSQL = "SELECT * FROM persons"; |
Statement stmt = connection.createStatement(); |
ResultSet rs = stmt.executeQuery(selectSQL); |
System.out.println("Fetching data from the table:"); |
while (rs.next()) { |
int id = rs.getInt("id"); |
String name = rs.getString("name"); |
System.out.println("ID: " + id + ", Name: " + name); |
} |
} |
} |
4. さいごに
最後までお付き合いありがとうございました!
このプロセスを通じて、データベースの移行だけでなく、新しい技術を学ぶ楽しさも感じていただけたなら嬉しいです。Amazon Q Developerを使えば、作業がぐっと楽になりますので、ぜひ活用してみてください。