使用 Java 连接 Databend
您可以通过专为 Java 编程语言设计的原生接口 Databend JDBC 驱动 从各种客户端工具和应用程序连接 Databend 并与之交互。
安装 Databend JDBC 驱动
本主题概述了下载和安装 Databend JDBC 驱动以在基于 Java 的项目中使用的步骤。该驱动程序需要 Java LTS(长期支持)1.8 或更高版本。如果您的客户端计算机没有最低要求的 Java 版本,请安装 Oracle Java 或 OpenJDK。
要下载 Databend JDBC 驱动程序:
- 转到 Maven Central Repository,网址为 https://repo1.maven.org/maven2/com/databend/databend-jdbc/
- 单击最新版本的目录。
- 下载 jar 文件,例如 databend-jdbc-0.1.1.jar。
要验证 Databend JDBC 驱动程序的版本,例如 databend-jdbc-0.1.1.jar,请在终端中运行以下命令:
java -jar databend-jdbc-0.2.1.jar --version
Databend JDBC 驱动程序以 JAR 文件的形式提供,可以直接集成到基于 Java 的项目中。或者,您可以在项目的 pom.xml 文件中声明 Maven 依赖项,如下所示:
<dependency>
<groupId>com.databend</groupId>
<artifactId>databend-jdbc</artifactId>
<version>0.2.1</version>
</dependency>
您还可以通过 Databend JDBC 驱动程序从 DBeaver 连接到 Databend。有关更多信息,请参见 使用 JDBC 连接到 Databend。
数据类型映射
下表说明了 Databend 数据类型及其对应的 Java 等效项之间的对应关系 :
Databend | Java |
---|---|
TINYINT | Byte |
SMALLINT | Short |
INT | Integer |
BIGINT | Long |
UInt8 | Short |
UInt16 | Integer |
UInt32 | Long |
UInt64 | BigInteger |
Float32 | Float |
Float64 | Double |
String | String |
Date | String |
TIMESTAMP | String |
Bitmap | byte[] |
Array | String |
Decimal | BigDecimal |
Tuple | String |
Map | String |
VARIANT | String |
Databend JDBC 驱动行为摘要
Databend 的 JDBC 驱动程序通常遵循 JDBC 规范。以下是一些常见基本行为、其关联的关键函数以及它们背后的原则的列表。
基本行为 | 主要功能 | 原理 |
---|---|---|
建立连接 | DriverManager.getConnection , Properties.setProperty | getConnection 使用提供的连接字符串与 Databend 建立连接。Properties 对象用于构造连接参数,例如 user 和 password ,这些参数也可以在连接字符串中指定。 |
执行查询 | Statement.createStatement() , Statement.execute() | Statement.execute() 使用 v1/query 接口执行查询。 |
批量插入 | Connection.prepareStatement() , PrepareStatement.setInt() , PrepareStatement.setString() , PrepareStatement.addBatch() , PrepareStatement.executeBatch() 等。 | Databend 支持使用 PrepareStatement 对象进行批量插入和替换(INSERT INTO 和 REPLACE INTO )。PrepareStatement.setXXX() 方法用于将值绑定到语句的参数。PrepareStatement.addBatch() 将尽可能多的数据添加到已创建的语句对象的批处理中。PrepareStatement.executeBatch() 将数据上传到内置的 Stage 并执行插入/替换操作,利用 Stage Attachment。 |
将文件上传到内部 Stage | Connection.uploadStream | 数据将上传到 Stage。 默认情况下,使用 PRESIGN UPLOAD 获取 URL,如果禁用 PRESIGN,则使用 v1/upload_to_stage API。 |
从内部 Stage 下载文件 | Connection.downloadStream | 将使用 PRESIGN DOWNLOAD 从 Stage 下载数据以获取 URL。 |
配置连接字符串
一旦驱动程序安装并集成到您的项目中,您可以使用以下 JDBC 连接字符串格式连接到 Databend:
jdbc:databend://<username>:<password>@<host_port>/<database>?<connection_params>
connection_params
指的是一个或多个格式为 param=value
的参数系列。 每个参数应以 & 符号分隔,并且连接字符串中的任何位置都不应有空格。 这些参数可以在连接字符串中设置,也可以在传递给 DriverManager.getConnection() 方法的 Properties 对象中设置。 例如:
Properties props = new Properties();
props.put("parameter1", parameter1Value);
props.put("parameter2", parameter2Value);
Connection con = DriverManager.getConnection("jdbc:databend://user:pass@host/database", props);
有关可用连接参数及其说明,请参阅 https://github.com/databendcloud/databend-jdbc/blob/main/docs/Connection.md#connection-parameters
示例
示例:创建数据库和表
package com.example;
import java.sql.*;
import java.util.Properties;
public class Main {
// 连接到本地 Databend,SQL 用户名为“user1”,密码为“abc123”作为示例。
// 请随意使用您自己的值,同时保持相同的格式。
static final String DB_URL = "jdbc:databend://127.0.0.1:8000";
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
properties.setProperty("user", "user1");
properties.setProperty("password", "abc123");
properties.setProperty("SSL", "false");
Connection conn = DriverManager.getConnection(DB_URL, properties);
Statement stmt = conn.createStatement();
String create_sql = "CREATE DATABASE IF NOT EXISTS book_db";
stmt.execute(create_sql);
String use_sql = "USE book_db";
stmt.execute(use_sql);
String ct_sql = "CREATE TABLE IF NOT EXISTS books(title VARCHAR, author VARCHAR, date VARCHAR)";
stmt.execute(ct_sql);
stmt.close();
conn.close();
System.exit(0);
}
}