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
相關的參數說明。