V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjstar
V2EX  ›  数据库

数据库操作,如何在多个不同的库里筛选数据

  •  
  •   zjstar · 2025 年 6 月 11 日 · 2604 次点击
    这是一个创建于 231 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近经常有这个操作,比如在 mysql 的 a 库的表里查出几十个用户名,然后去 oracle 的 b 库的一个表里去搜这些用户名数据,这种跨库的,不知道大家怎么操作的,被逼的没办法了,写了个小工具,把查出的数据,拼接起来,然后去 b 库里去查。
    比如我查出数据,复制出来是:
    111
    222
    333
    然后我想去 b 库的表里查,那我 sql 应该是 select * from b where name in ('111','222','333')

    就是把
    111
    222
    333
    转化成 '111','222','333'

    写了个工具就是做了这个转换,大家有同样需求的可以拿来用,或者大家有没有别的办法来解决这个问题
    https://www.joinlines.org/
    22 条回复    2025-06-20 20:59:38 +08:00
    MoYi123
        1
    MoYi123  
       2025 年 6 月 11 日
    用 duckdb 就可以 https://duckdb.org/docs/stable/data/data_sources
    配置一下 datasource
    zjstar
        2
    zjstar  
    OP
       2025 年 6 月 11 日
    @MoYi123 感谢,我去研究下
    starlion
        3
    starlion  
       2025 年 6 月 11 日
    你这是啥子业务系统,用了不同的数据库系统
    数据量是多少啊,
    sujin190
        4
    sujin190  
       2025 年 6 月 11 日 via Android
    https://github.com/snower/syncany-sql

    那分享下吧,支持用 mysql 语法联表查询,跨库跨机器跨不同类型数据库都可以,比如 mysql 和 mongo ,以及 mysql 和普通 json 、ecxel 等文件 join 查询,还能导入 python 自定义函数用于计算,自行编写聚合函数等等

    https://github.com/snower/syncany-server

    还有个 server 封装了 mysql server 的接口,可以用支持 mysql driver 的程序调用
    CEBBCAT
        5
    CEBBCAT  
       2025 年 6 月 12 日
    $ echo -e 'apple\nbanana\ncherry' | awk '{printf("\"%s\"\n", $0)}' | tr \n ,

    🤔

    SELECT GROUP_CONCAT(name) FROM table

    🤔
    ---
    可以把数据都收集在一起,用中间件做连接也行。有的时候不是办法想不到,只是做事有障碍,加油
    xjzshttps
        6
    xjzshttps  
       2025 年 6 月 12 日
    不做参数化查询,那么爱要小心 sql 注入
    VeryZero
        7
    VeryZero  
       2025 年 6 月 12 日
    冷知识,datagrip 选择数据后直接复制粘贴就可以有这样的效果,甚至可以自定义脚本
    penisulaS
        8
    penisulaS  
       2025 年 6 月 12 日
    我的主数据库是 pg ,支持外源表( fdw ),可以直连 mysql ,用 sql 直接操作
    spritecn
        9
    spritecn  
       2025 年 6 月 12 日
    很久之前,我也写过一个...基本和你这个一毛一样
    spritecn
        10
    spritecn  
       2025 年 6 月 12 日
    @spritecn 我主要用是来拼 inset 的,偶尔拼一些查询
    ldyisbest
        11
    ldyisbest  
       2025 年 6 月 12 日



    直接这样就能替换了
    zjstar
        12
    zjstar  
    OP
       2025 年 6 月 12 日
    @starlion 在客户那边对接不同的厂家,不同厂家用不同的数据库,我们的系统的数据来源,依赖于他们不同的厂家 o(╥﹏╥)o
    zjstar
        13
    zjstar  
    OP
       2025 年 6 月 12 日
    @sujin190 感谢,就是我需要的哈哈
    zjstar
        14
    zjstar  
    OP
       2025 年 6 月 12 日
    @spritecn 查询我也有需求,不过懒得写工具了,很多直接让 ai 给我拼了
    zjstar
        15
    zjstar  
    OP
       2025 年 6 月 12 日
    @ldyisbest 这个图是啥工具啊
    ldyisbest
        16
    ldyisbest  
       2025 年 6 月 12 日
    @zjstar #15 高级一点的文本编辑器都行,比如 vscode ,我这个用的是 sublime
    spritecn
        17
    spritecn  
       2025 年 6 月 13 日
    @ldyisbest 快捷键学习成本高..不直观
    ldyisbest
        18
    ldyisbest  
       2025 年 6 月 13 日
    @spritecn #17 哪里有什么快捷键,这是个全局替换的输入,写过代码多少都用过几次,你要说正则学习成本高那还说得过去,但这玩意用两次不就记住了,懒的话那没办法
    sivacohan
        19
    sivacohan  
    PRO
       2025 年 6 月 13 日
    你这个是典型的外表需求,oracle 我听说有这方面的支持。

    如果 oracle 没有或者没开放外表,那你不妨在本地启动一个 postgresql ,然后用 fdw 把外部数据都挂进 pg ,统一在 pg 里面进行查询。
    nooneanyone
        20
    nooneanyone  
       2025 年 6 月 13 日
    搞个能支持多协议 source 的数据库,把你的所有库都作为 source 连进来。
    realpg
        21
    realpg  
    PRO
       2025 年 6 月 13 日
    @starlion #3
    大型非 IT 企业不都是这样...
    采购几十种各种系统 互相数据都没法关联
    但是有一些开放接口能访问
    starlion
        22
    starlion  
       2025 年 6 月 20 日
    @realpg 所以 SOA 那一套解决方案在传统 IT 企业还是有用的 - -!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:00 · PVG 17:00 · LAX 01:00 · JFK 04:00
    ♥ Do have faith in what you're doing.