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 Catalog
jdbc0
的创建语句。SHOW CREATE CATALOG jdbc0;
删除JDBC Catalog
您可以通过DROP CATALOG删除一个JDBC Catalog。
例如,通过如下命令删除JDBC Catalogjdbc0
。
DROP Catalog jdbc0;
查看JDBC Catalog中的表数据
您可以通过如下操作查询JDBC Catalog内的表数据。
通过SHOW DATABASES查看指定Catalog所属的集群中的数据库。
SHOW DATABASES FROM <catalog_name>;
通过SET CATALOG切换当前会话生效的Catalog。
SET CATALOG <catalog_name>;
再通过USE指定当前会话生效的数据库。
USE <db_name>;
或者,也可以通过USE直接将会话切换到目标Catalog下的指定数据库。
USE <catalog_name>.<db_name>;
通过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
相关的参数说明。