一个支持 Lua 的高性能数据迁移工具

2022-03-03 13:24:08 +08:00
 zoain

river - 高性能数据迁移工具

Github: https://github.com/cc-morning/river

不吝给个 star !

特性

使用教程

整个迁移流程就像一条河流

    // 直接迁移
    From Stream -> To Stream
     |              |
 e.g: Oracle    e.g: PostgreSQL

                    Lua 脚本
    // Lua 脚本迁移   /
    From Stream -> Filter Stream -> To Stream
     |                               |
 e.g: Oracle | JSON | CSV        e.g: MySQL | ES | PostgreSQL

支持的类型

From:CSV ,JSON ,MySQL ,Oracle ,PostgreSQL

To:Elasticsearch ,MySQL ,Oracle ,PostgreSQL

示例

config.toml

[task1]
thread = 2 # 任务协程运行时的调度线程数
filter = "type_conver.lua" # Lua 脚本

[task1.from.csv]
path = [ "/xxx/xxx/test1.csv", "/xxx/xxx/test2.csv" ]
delimiter = "," # 分隔符
flexible = true # 忽略错位
quoting = true # 支持引号
double_quote = true # 引号转义

[task1.to.postgresql]
url = "postgresql://test:test@127.0.0.1/test"
table = "test"
fixnul = true # 修复 0x00

[task2.from.json]
path = [ "/xxx/xxx/test1.json", "/xxx/xxx/test2.json" ]
columns = "id,name,sex,age"
parallel = 10240 # 格式化,提取指定 key 行为并行度

[task2.to.mysql]
url = "mysql://test:test@127.0.0.1/test"
table = "test"

多个任务会多线程同时执行。

运行命令

# // 不打印日志执行
# river config.toml
# 
# // 打印日志执行(日志级别:error ,warn ,info ,debug ,trace )
# LOG=info river config.toml
2070 次点击
所在节点    分享创造
3 条回复
zoain
2022-03-03 13:29:14 +08:00
得益于 lua 的灵活以及 jit 提供不俗的性能,甚至可以拿来做一些简单的清洗工作😃
pkwenda
2022-03-03 15:12:52 +08:00
lua 库必须 star
zoain
2022-03-04 11:34:40 +08:00
@pkwenda 哈哈哈,lua 确实不错😌

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX