JDBC Catalog

JDBC Catalog是一种External Catalog,从3.0版本开始支持。本文为您介绍如何创建和查看JDBC Catalog。

背景信息

通过JDBC Catalog,您可以:

  • 直接查询MySQL、PostgreSQL及其协议兼容的数据源中的数据。

  • 基于JDBC Catalog,结合INSERT INTO能力对JDBC数据源的数据实现转换和导入。

创建JDBC Catalog

语法

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
( 
  "key"="value", 
  ...
);

参数说明

  • catalog_name:JDBC Catalog的名称,必选参数。命名要求如下:

    • 必须由字母(a~z或A~Z)、数字(0~9)或下划线(_)组成,并且只能以字母开头。

    • 总长度不能超过64个字符。

  • comment:可选,JDBC Catalog 的描述。

  • PROPERTIES: JDBC Catalog的属性。参数配置如下表所示。

    属性

    是否必选

    说明

    type

    数据源类型,固定取值为 jdbc

    user

    目标数据库登录用户名。

    password

    目标数据库用户登录密码。

    jdbc_uri

    JDBC驱动程序连接目标数据库的URI。

    • 如果使用MySQL,格式为:"jdbc:mysql://ip:port"

    • 如果使用PostgreSQL,格式为:"jdbc:postgresql://ip:port/db_name"

    driver_url

    用于下载JDBC驱动程序JAR包的URL。

    对于Serverless StarRocks实例,您需要将JDBC驱动程序JAR包上传到OSS上,并开放JAR包的公共读权限。详情请参见简单上传设置Bucket ACL。然后将driver_url配置成包含对应内网Endpoint的HTTP URL,例如:http://<YourBucketName>.oss-cn-xxxx-internal.aliyuncs.com/mysql-connector-java-*.jar

    driver_class

    JDBC驱动程序的类名称。以下是常见数据库引擎支持的JDBC驱动程序类名称:

    • MySQL:

      • MySQL 5.x及以前版本,请使用com.mysql.jdbc.Driver

      • MySQL 6.x及之后的版本,请使用com.mysql.cj.jdbc.Driver

    • PostgreSQL:请使用org.postgresql.Driver

示例

CREATE EXTERNAL CATALOG mysql_catalog
PROPERTIES
(
    "type"="jdbc",
    "user"="root",
    "password"="xxxxx",
    "jdbc_uri"="jdbc:mysql://127.0.0.1:3306",
    "driver_url"="http://<YourBucketName>.oss-cn-xxxx-internal.aliyuncs.com/mysql-connector-java-*.jar",
    "driver_class"="com.mysql.cj.jdbc.Driver"
);
说明

示例中的mysql-connector-java-*.jar,请根据MySQL Driver的实际版本填写。

查看JDBC Catalog

  • 您可以通过SHOW CATALOGS查询当前所在StarRocks集群里所有Catalog。

    SHOW CATALOGS;
  • 您也可以通过SHOW CREATE CATALOG查询某个External Catalog的创建语句。例如,通过如下命令查询JDBC Catalogjdbc0的创建语句。

    SHOW CREATE CATALOG jdbc0;

删除JDBC Catalog

您可以通过DROP CATALOG删除一个JDBC Catalog。

例如,通过如下命令删除JDBC Catalogjdbc0

DROP Catalog jdbc0;

查看JDBC Catalog中的表数据

  • 您可以通过如下操作查询JDBC Catalog内的表数据。

    1. 通过SHOW DATABASES查看指定Catalog所属的集群中的数据库。

      SHOW DATABASES FROM <catalog_name>;
    2. 通过SET CATALOG切换当前会话生效的Catalog。

      SET CATALOG <catalog_name>;

      再通过USE指定当前会话生效的数据库。

      USE <db_name>;

      或者,也可以通过USE直接将会话切换到目标Catalog下的指定数据库。

      USE <catalog_name>.<db_name>;
    3. 通过SELECT查询目标数据库中的目标表。

      SELECT * FROM <table_name>;
  • 您也可以通过SELECT查询目标数据库中的目标表。

    SELECT * FROM <catalog_name>.<database_name>.<table_name>;

常见问题

Q:系统返回“Malformed database URL, failed to parse the main URL sections”报错应该如何处理?

A:该报错通常是由于jdbc_uri中传入的URI有误而引起的。请检查并确保传入的URI准确无误。参见本文PROPERTIES相关的参数说明。