我正在创建 Oracle 到 Vertica 进程! 我们希望创建一个可以运行大量报告的 Vertica DB。现在,Vertica 很酷,速度很快,空间利用率很高,一切都很好,直到我们到达将数据从 Oracle 传输到 Vertica 的主要部分。 好的,初始加载没问题,从 Oracle 转储到 csv 到 Vertica,加载时间是个笑话,没有问题,到目前为止,每个人的事情都是糟糕的笑话,或者发生了一些神奇的事情!好就是简单快。 现在不好 -> 数据库已启动并运行 ORACLE/VERTICA - 我的数据在 ORACLE 中发生更改,因此我需要在 VERTICA 中复制数据。现在怎么办: 根据我的测试以及我对 Vertica 插入的了解,除非每秒最多 20 次,否则不会使用更新 - 因此实时复制是不可能的。 所以我想从 oracle 和 ETL 中读取 arch 日志 -it 以使用新数据、更改数据、删除值更改数据创建 CSV 数据,然后将其应用到 VERTICA 中,但我无法获得这样的列表:
因为 VERTICA 中的显式数据更改会导致性能下降。
所以我正在寻找一些关于如何解决这个问题的想法,但我知道我不能:
我依赖的东西:
我看到了持续的数据复制,但似乎现在有人想卖他们的产品,我无法联系到他们。
将把整个数据加载到一个新表中 然后更换可以接受吗?
copy new() ...
-- you can swap tables in one command:
alter table old,new,swap rename to swap,old,new;
truncate new;
从 Oracle 中提取数据(.csv 格式)并使用 Vertica COPY 命令加载。编写一个简单的 shell 脚本来自动执行此过程。
我曾经使用Talend(ETL),但它非常慢,然后转移到传统流程,它确实对我有用。目前正在处理18M记录,我的整个过程不到2分钟。
最近,我们使用 debezium 和 Kafka 流实现了从 SQL Server(130 个数据库)到 Vertica 中的集中式数据仓库的实时刷新。在这之间编写了一个脚本来识别插入/更新/删除并在 Vertica 中应用相同的操作。
Avinash 关于使用 shell 脚本的回答听起来很棒。