將 JDBC 連線至 PostgreSQL 方言資料庫

您可以同時使用 PostgreSQL JDBC 驅動程式和 Spanner JDBC 驅動程式,搭配 Spanner PostgreSQL 方言資料庫。本頁面說明如何使用這兩種驅動程式連線至資料庫。

PostgreSQL JDBC 驅動程式

本節說明如何將 PostgreSQL JDBC 驅動程式連線至 Spanner 中的 PostgreSQL 方言資料庫。JDBC 是 PostgreSQL 的標準 Java 驅動程式。

使用 PostgreSQL JDBC 驅動程式時,必須使用 PGAdapter 在 PostgreSQL 網路通訊協定和 Spanner 網路通訊協定之間進行轉譯。您可以將 PGAdapter 新增為依附元件,並在應用程式中執行。

  1. 將 PGAdapter 和 PostgreSQL JDBC 驅動程式新增為應用程式的依附元件。

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>0.48.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.48.0</version>
    </dependency>
  2. 透過應用程式啟動 PGAdapter 內部程序。

              OptionsMetadata.Builder builder =
                OptionsMetadata.newBuilder()
                  .setProject("my-project")
                  .setInstance("my-instance")
                  .setPort(5432);
              ProxyServer server = new ProxyServer(builder.build());
              server.startServer();
              server.awaitRunning();
              

    更改下列內容:

    • my-project:PostgreSQL 方言資料庫所在的 Google Cloud專案 ID。
    • my-instance:PostgreSQL 方言資料庫所在的 Spanner 執行個體 ID。
    • 5432:PGAdapter 執行的通訊埠號碼。將通訊埠設為 `0`,即可使用動態指派的通訊埠。
  3. 確認已載入 PostgreSQL JDBC 驅動程式。

            Class.forName("org.postgresql.Driver");
    
            try (Connection connection =
                DriverManager.getConnection("jdbc:postgresql://localhost:5432/my-database")) {
              try (ResultSet resultSet =
                  connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
                while (resultSet.next()) {
                  System.out.printf(
                    "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
                }
              }
            }
           

    更改下列內容:

    • localhost:PGAdapter 執行的主機。
    • 5432:PGAdapter 執行的通訊埠號碼。
    • my-database:PostgreSQL 方言資料庫的名稱。

    PGAdapter GitHub 存放區包含 可運作的範例應用程式

Spanner JDBC 驅動程式

本節說明如何使用 Spanner JDBC 驅動程式連線至 PostgreSQL 方言資料庫。

  1. 將 Spanner JDBC 驅動程式新增為應用程式的依附元件。

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.61.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-spanner-jdbc</artifactId>
        <exclusions>
          <exclusion>
            <groupId>com.google.api.grpc</groupId>
            <artifactId>proto-google-cloud-spanner-executor-v1</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
  2. 使用 Spanner JDBC 連線網址,連線至 PostgreSQL 方言資料庫。

          try (Connection connection = DriverManager.getConnection(
              "jdbc:cloudspanner:/projects/my-project/instances/my-instance/databases/my-database")) {
            try (ResultSet resultSet =
                connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
              while (resultSet.next()) {
                System.out.printf(
                  "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
              }
            }
          }
          

    更改下列內容:

    • my-project:PostgreSQL 方言資料庫所在的 Google Cloud專案 ID。
    • my-instance:PostgreSQL 方言資料庫所在的 Spanner 執行個體 ID。
    • my-database:PostgreSQL 方言資料庫的名稱。

    驅動程式會自動偵測指定資料庫的 SQL 方言。連線網址中不需要方言參數。

後續步驟