SQL Server 数据库迁移到 PostgreSQL 或者其它云原生 OLAP 库有哪些比较好的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
noparking188
V2EX    SQL Server

SQL Server 数据库迁移到 PostgreSQL 或者其它云原生 OLAP 库有哪些比较好的方案

  •  
  •   noparking188 2023-04-22 23:25:10 +08:00 3131 次点击
    这是一个创建于 953 天前的主题,其中的信息可能已经有所发展或是发生改变。

    SQL Server 上

    1. 数千张表、TB 级数据;
    2. 一次性全量迁移;
    3. 字段类型尽可能兼容;
    <>想请教大家迁移到 PostgreSQL ,有什么比较好的方案推荐的。

    发散一下,分成两个步骤:

    1. 从 SQL Server 转换建表 DDL 为目标数据库格式、导出数据为通用格式( JSON 、Parquet...);
    2. 导入数据到目标数据库上目标表。

    主要想讨论和请教的是从 SQL Server 这类传统数仓迁移到比较新的各种云上数仓有什么好的、成熟一点的方案参考。

    谢谢大家

    第 1 条附言    2023-04-23 10:27:42 +08:00

    这里提问只是单纯想和有这方面经验的老哥、或者感兴趣的老哥简单探讨下可能的方案,脑洞随意,我来实验。

    我在做这个需求时基于自身搜索能力并没有找到什么比较好的开源方案,非常头疼。

    分享下我目前的研究:

    1. 从 SQL Server 导出大批量数据,目前来看 bcp 是最快的,Client 端带宽提到和 SQL Server 对齐;
    2. schema 转换有一个开源项目叫 sqlglot,可以二次开发;
    3. 往目标库 load 数据,用官方提供和推荐的最佳实践就行,比如 PG/Redshift 是 COPY?
    4. 交换的数据格式,对比 TSV、CSV,JSON 是兼容性最好的;

    不知道这类需求多不多,值不值得投入时间搞一个开源方案。

    欢迎大家参与讨论

    17 条回复    2023-04-24 11:28:28 +08:00
    v2wtf
        1
    v2wtf  
       2023-04-22 23:56:02 +08:00
    吐槽一下:你这个上 TB 的数据,tmd 谁能给『真正适用实际情况』的建议?给了你敢用?

    这种量级的数据迁移,起码要一两个专业人士专门到现场沟通详细情况、制订方案,光是数据迁移本身恐怕没有把月搞不定,再加上相关的系统的迁移、改造,恐怕三个月能下来已经是非常乐观的估计了。
    512357301
        2
    512357301  
       2023-04-23 00:24:58 +08:00 via Android
    花钱。
    省心,还能甩锅。
    mooyo
        3
    mooyo  
       2023-04-23 00:26:33 +08:00
    大客户可以开工单给云厂商沟通协助
    ihacku
        4
    ihacku  
       2023-04-23 00:30:13 +08:00 via Android
    deorth
        5
    deorth  
       2023-04-23 00:30:32 +08:00 via Android
    之前一个项目给客户做的数据库迁移,XXTB ,1X0W RMB 。两个专人现场三个月。业务改造是客户自己的事。
    F281M6Dh8DXpD1g2
        6
    F281M6Dh8DXpD1g2  
       2023-04-23 00:33:52 +08:00   1
    给楼主支个招
    你就跟阿里云说你要上云,让他们出方案
    billzhuang
        7
    billzhuang  
       2023-04-23 08:31:54 +08:00 via iPhone
    babelfish +1
    netnr
        8
    netnr  
       2023-04-23 09:21:37 +08:00
    类似的情况,百来张表,几个 G 的数据

    先下载一个工具 https://fishcodelib.com/DBMigration.htm
    用于数据库转换,主要用于表结构转换,表数据转换也支持,但速度一般

    表数据迁移可以用 kettle 工具来做,我自己没怎么用过,但我们的业务有用这个来同步数据

    我一般用自己写的 C# 控制台程序,逐行读取表数据分批表复制写入,实践过几百万的数据量
    (我其实是想实践测试一下,交个朋友!)
    noparking188
        9
    noparking188  
    OP
       2023-04-23 09:37:12 +08:00
    @billzhuang 感谢,这个参加 AWS webinar 听他们介绍过
    noparking188
        10
    noparking188  
    OP
       2023-04-23 09:38:24 +08:00
    @ihacku 感谢,这个听 AWS 的介绍过
    noparking188
        11
    noparking188  
    OP
       2023-04-23 09:40:19 +08:00
    @v2wtf 哈哈,吐槽合理,不过我只是想和大家发散性思维探讨一下可能的方案,随意脑洞,我来实验
    noparking188
        12
    noparking188  
    OP
       2023-04-23 09:43:46 +08:00
    @liprais 哈哈这个可行,不过云厂商的 Solution Architect 没想象的万能,有时候还比较不靠谱
    noparking188
        13
    noparking188  
    OP
       2023-04-23 10:37:51 +08:00
    @netnr #8 感觉这个类似 AWS 的 SCT ,不过我看了只有图形界面,就算百来张表也不好一张张去复制粘贴吧,有 API 接口就好了。
    我目前的实现单表最大 ~5000 万、~60GB ,光从 SQL Server export 数据就三四十分钟了。import 导目标库耗时为 export 的 ~30%。当然光这样看没参考价值,强依赖两边数据库的软硬件配置
    netnr
        14
    netnr  
       2023-04-23 12:08:27 +08:00 via Android
    不是可以全选表
    netnr
        15
    netnr  
       2023-04-23 12:13:30 +08:00 via Android
    另外提个醒 这种单边数据行比较多,可以考虑导入数据后再建索引,导数据开启缓存模式
    noparking188
        16
    noparking188  
    OP
       2023-04-23 13:08:42 +08:00
    @netnr #15 感谢建议,不过换了数据库系统是不是应该重新设计索引,迁移旧库的索引感觉没必要
    v2wtf
        17
    v2wtf  
       2023-04-24 11:28:28 +08:00
    @noparking188 只是测试的话,可以试试 pg_loader 我用来从 mysql 导入到 pg ,还是挺好用的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5164 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:08 PVG 17:08 LAX 01:08 JFK 04:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86