将 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.42.2</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.42.2</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.52.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 方言。连接网址中不需要方言参数。

后续步骤