一、脚本逻辑
1.1 数据流图
Clickhouse数据库所在主机安装clickhouse-jdbc&相应数据库驱动之后,可以在Clickhouse读取Oracle数据库的数据;同时Clickhouse 自带mysql函数,可以直接读取,插入数据到mysql数据库中(注意⚠️:在clickhouse数据库上修改不了mysql数据库数据)
这个过程借助第三方数据库实现数据从oracle数据库到mysql数据的转变,比起传统的ETL工具,既不需要空间去转换数据,也不需要下载原始数据和上传转换好的数据。
1.2 方便使用的一些额外配置
1.2.1 named collection
命名集合(named collection)提供了一种存储键值对集合的方法,用于配置与外部源的集成。您可以将命名集合与字典、表、表函数和对象存储一起使用。
命名集合可以使用DDL或在配置文件中配置,并在ClickHouse启动时应用。它们简化了对象的创建和对没有管理权限的用户隐藏凭据。命名集合中的键必须与相应函数、表引擎、数据库等的参数名称匹配。
在SQL中可以重写命名集合中设置的参数,如下例所示。使用[NOT]OVERRIDABLE(译为:可覆盖的)关键字和XML属性和/或配置选项allow_named_collection_override_by-default可以限制此功能。
在users.xml文件中,我们可以找到default用户相关权限设置named_collection_control和access_management:
<users>
<!-- If user name was not specified, 'default' user is used. -->
<default>
<profile>default</profile>
<networks>
<ip>10.10.208.160</ip>
<ip>127.0.0.1</ip>
</networks>
<password_sha256_hex>bcb95c15840d47e269341b5d73ec9f42bc4f43</password_sha256_hex>
<quota>default</quota>
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
</default>
</users>
本文中我们主要用named collection 来
Named collections for accessing MySQL database
CREATE NAMED COLLECTION aicc AS
user = 'aicc',
password = 'aiccpass',
host = '10.80.161.210',
port = 3188,
database = 'aicc',
connection_pool_size = 24,
replace_query = 1,
read_write_timeout=1800;<