こんにちは。デジタルイノベーション推進室の戦闘員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を使えば、作業がぐっと楽になりますので、ぜひ活用してみてください。


