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

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

  •  
  •   zjstar · 51 天前 · 2002 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近经常有这个操作,比如在 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  
       51 天前
    用 duckdb 就可以 https://duckdb.org/docs/stable/data/data_sources
    配置一下 datasource
    zjstar
        2
    zjstar  
    OP
       51 天前
    @MoYi123 感谢,我去研究下
    starlion
        3
    starlion  
       51 天前
    你这是啥子业务系统,用了不同的数据库系统
    数据量是多少啊,
    sujin190
        4
    sujin190  
       51 天前 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  
       51 天前
    $ echo -e 'apple\nbanana\ncherry' | awk '{printf("\"%s\"\n", $0)}' | tr \n ,

    🤔

    SELECT GROUP_CONCAT(name) FROM table

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



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

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