V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wyhaya
V2EX  ›  分享创造

做了个数据库客户端,非常轻量级,欢迎大家尝试一下

  •  
  •   wyhaya · 229 天前 · 5463 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前支持 PostgreSQL, MySQL, MSSQL 和 SQLite 数据库,还处于测试版。

    欢迎大家尝试一下,也欢迎提点反馈建议。

    https://dataflare.app

    第 1 条附言  ·  228 天前
    非常感谢大家的建议。
    我建了个群: https://t.me/dataflare
    79 条回复    2024-03-19 10:06:55 +08:00
    brader
        1
    brader  
       229 天前
    试用了一下,整体画面看着还是很舒服的,美观、简约,但我似乎没有发现修改表设计功能,这是个很重要的功能。
    然后 UI 交互上,很多二次点击和折叠,这点我觉得不太好,比如修改行内容、排序,sql 查询中,run 每次都要点两下。这几个可以参考 navicat ,它做的就很好
    emeab
        2
    emeab  
       229 天前
    没有修改表功能..
    OceanBreeze
        3
    OceanBreeze  
       229 天前
    太强了
    wyhaya
        4
    wyhaya  
    OP
       229 天前
    @brader @emeab 感谢建议,修改表功能这个我还在开发中,以后会加上的。
    UI 交互这块儿我再优化优化,确实不太好用。
    关于 run 每次都要点两下,其实这个我主要是想让用户使用快捷键 cmd + enter / cmd + shift + enter 来运行 SQL, 这样也更方便快捷,而且更加清晰。
    jlkm2010
        5
    jlkm2010  
       229 天前
    tauri 开发的吗
    wyhaya
        6
    wyhaya  
    OP
       229 天前
    @jlkm2010 是的
    haozes
        7
    haozes  
       229 天前
    看上去,真不赖
    zoharSoul
        8
    zoharSoul  
       229 天前
    感觉和 datagrip 有点像, 尤其是那个 new table 的界面
    真不错啊,
    mikaelson
        9
    mikaelson  
       229 天前
    看过去不错啊,现在流行的那几个客户端,都感觉太重了
    neochen13
        10
    neochen13  
       229 天前
    有种 tableplus 的感觉,非常棒啊
    turan12
        11
    turan12  
       229 天前 via iPhone
    @mikaelson 确实是,其实普通情况下用不到那么多功能。
    Axel2
        12
    Axel2  
       229 天前
    v 站果然是藏龙卧虎之地
    mikaelson
        13
    mikaelson  
       229 天前
    @turan12 #11 dbeaver 给我的感觉就非常卡。。。不懂为什么,navicat 倒是好多了,不过也还是臃肿
    neochen13
        14
    neochen13  
       229 天前
    连接 127.0.0.1:3306
    会报错:encountered unexpected or invalid data:unexpected response from SsLRequest:0×4a
    0x663
        15
    0x663  
       229 天前
    @neochen13 #14 进去默认是 PostgreSQL 的驱动,点那三个 … 然后选择支持你数据库的,看你端口是 3306 应该是 MySQL
    0x663
        16
    0x663  
       229 天前
    非常不错的轻量级数据库,如果后续能够加入配置云端同步就好了
    npe
        17
    npe  
       229 天前
    不错,希望增加 SSH
    neochen13
        18
    neochen13  
       229 天前
    @0x663 #15 我点了三个点,显示:
    Connections (灰色)
    Import
    Export
    没了……
    neochen13
        19
    neochen13  
       229 天前
    @0x663 #15 尝试了一下,实际上应该是点三个点,左边的 New Connection 才对……
    shanghai1998
        20
    shanghai1998  
       229 天前
    链接 mysql:error communicating with database: received fatal alert: HandshakeFailure

    界面太好看,考虑过开源部分基础框架吗?可以提交一些通用的组件库
    wyhaya
        21
    wyhaya  
    OP
       229 天前
    @0x663 感谢建议,不过目前不会做这些功能,我还是想着能将现有功能尽快稳定下来。
    @npe 现在可以 PG 和 MySQL 都支持 SSH 代理啊,MSSQL 的我还没加上,目前还有点问题。
    @neochen13 界面设计的有点让人迷惑吧,我下个版本改进一下。
    neochen13
        22
    neochen13  
       229 天前
    使用了下,完成度好高!再优化优化,可以代替我现在用的 tableplus 了
    NoOneNoBody
        23
    NoOneNoBody  
       229 天前
    原来还真是个客户端,只能连接,没有打开本地 sqlite 文件
    elboble
        24
    elboble  
       229 天前
    macos11.6 ,打开白页面,是不是在加载资源?全局代理也不行。
    lazyboy
        25
    lazyboy  
       229 天前
    Unsupported datatype: BIT
    wyhaya
        26
    wyhaya  
    OP
       229 天前
    @NoOneNoBody 对于 SQLite ,如果不填写 数据库文件路径,是会在内存中打开一个数据库,如果你填写了,是会打开本地数据库的
    luzemin
        27
    luzemin  
       229 天前
    wyhaya
        28
    wyhaya  
    OP
       229 天前
    @elboble 感谢,我只在 macOS 12.x 上测试了,再老的版本 我就没测试过了,我回头看一下。
    @lazyboy 在 MySQL 中有两个不支持的类型,一个是 BIT 一个是 GEOMETRY ,我还没有来及的添加,后续会加上
    wyhaya
        29
    wyhaya  
    OP
       229 天前
    @elboble 另外,应用除了 你主动连接数据库 和 在每次打开时 调用 “检查更新” 接口外,不会访问任何网络,所以没有必要开启代理
    NoOneNoBody
        30
    NoOneNoBody  
       229 天前
    @wyhaya #26
    我的意思是我理解错了
    这个是管理数据的东西,不是管理数据库的东西
    连 sqlite 也需要通过协议,而不是直接打开文件
    elboble
        31
    elboble  
       229 天前
    @wyhaya 11.6 的 intel 版本
    linxl
        32
    linxl  
       229 天前
    good ,支持 linux 就很需要,Linux 下数据库客户端太少了。
    zzl22100048
        33
    zzl22100048  
       229 天前
    这个界面有点像 dbgate
    wyhaya
        34
    wyhaya  
    OP
       229 天前
    @shanghai1998 这个错误不太明显,以后我优化优化,我也不好说这是什么原因导致的,你 SSL 选项选的哪个,或者使用了代理吗?

    组件是使用 RadixUI, 我加了点样式,这个开源就算了,我觉得意义不大
    andytao
        35
    andytao  
       229 天前
    做 袋鼠数据库工具 近五年了,不好听的话就省了,惟愿兄弟能初心不改,坚持到底。
    marcong95
        36
    marcong95  
       229 天前
    建议考虑支持一下 sqlcipher 之类的加密 sqlite ,试了几个客户端对 sqlcipher 的支持都有点问题。。
    wyhaya
        37
    wyhaya  
    OP
       229 天前
    @andytao 谢谢,第一次听说 袋鼠数据库工具,我看了一下,感觉好强大啊
    wyhaya
        38
    wyhaya  
    OP
       229 天前
    @marcong95 收到 🫡
    EmptyDX
        39
    EmptyDX  
       229 天前
    适用了一下,感觉还不错,希望越来越好。Mark 一下
    优点:
    1. 清爽简洁
    2. 连接查询很快

    待优化:
    1. Query 框输入较快时,背景底色会一闪一闪
    2. 结果较多时,滚动查看没那么流畅,会一闪一闪
    3. 表操作较少,例如:缺少修改表、截断表、查看表结构等
    4. 希望 SQL 可以 uglify
    wyhaya
        40
    wyhaya  
    OP
       229 天前
    @EmptyDX 非常感谢,我会尽快改进
    fonlan
        41
    fonlan  
       229 天前
    挺不错的,支持支持。
    提个建议,对列表形式的显示还是不够直观,Array<1>这种样式看不到具体 list 的内容,不够直观。
    wyhaya
        42
    wyhaya  
    OP
       229 天前
    @fonlan 确实是这样,我考虑的是由于单元格比较小,展示列表会很困难,现在只能通过双击显示编辑器来查看具体内容,这里还有待优化。(目前还不支持编辑 Array )
    body007
        43
    body007  
       229 天前
    体验不错,先 Mark ,期待后续更多功能。
    xiaohundun
        44
    xiaohundun  
       229 天前
    Mark ,等新增了修改表功能就迁移过来,另外有考虑做导入导出之类的辅助功能么
    wyhaya
        45
    wyhaya  
    OP
       229 天前
    @xiaohundun 导入 目前还不支持,导出 目前只支持导出当前 页/当前查询结果,并且只支持 JSON ,包括导入/导出/备份之类的,我目前都还没考虑到,还缺失很多,以后看情况再加吧。
    xiaohundun
        46
    xiaohundun  
       229 天前
    @wyhaya 可能我没找到哈,能不能关闭 autofetch ,没有的话可以加个开关么
    BigBai
        47
    BigBai  
       229 天前 via Android
    作者您好,在 windows 10 LTSC 系统的沙盒(sandbox)环境下安装失败,报错信息`Failed to install WebView2! The app can't run withoutit. Try restarting the installer.`[报错截图]( )
    JohnSwit
        48
    JohnSwit  
       229 天前
    刚试用了一下,还是有一点问题:
    1.写查询语句,有明显的卡顿,具体就是输入字母后没有立马出现,要等待几百毫秒,比如我输入字母 FROM ,我已经输入完毕了,然后软件才出现 FROM ,连续输入明显的卡顿感,可能我表比较多,有 1000 多个表。
    2.WHERE 语句后,显示的字段不明显,比如我查询 A 表,WHERE 语句后一般来说就是加上 A 表的条件,但是我发现我想快速获取一些字段,输入后没有明显的匹配上。
    3.无法搜索表,我想通过我的查询语句去看表结构,结果不行,然后我想看看有没有办法搜索想要的表,没看到搜索功能,我 1000 多个表,一个一个找不太可能。
    JohnSwit
        49
    JohnSwit  
       229 天前
    还有一点,能不能不要自动为我的表名或字段加上 '' 引号?改多几次,就会有很多引号,还得一个一个删掉,而且还会引起语句问题
    faceair
        50
    faceair  
       229 天前
    尝试连接 https://doris.apache.org 的 mysql 端口报了一个错:error returned from database: 1105 (HY000): errCode = 2, detailMessage = Set statement does't support non-constant expr.

    看是否方便兼容一下这种支持 mysql 协议,但又没那么标准的服务端
    JohnSwit
        51
    JohnSwit  
       229 天前
    还有一个致命问题,查询速度太慢,相同的表,10 万+数据,DataGrip 秒出结果,你这个客户端需要 20 秒+才能出结果,并且运行过程中整个程序都卡住,出结果后才恢复
    wyhaya
        52
    wyhaya  
    OP
       229 天前
    @xiaohundun autofetch? 具体来说是啥意思,我有点不明白,是自动获取 表?

    @BigBai 你好,由于这个 App 基于 Tauri ,所以它需要基于 Webview 运行,考虑到安装包体积问题,我没将 webview 嵌入到 App 内,Webview2 是在 win10 之后的某个版本之后才内置的,按理里说它应该提示你安装 Webview, 我找个 Windows 再检查检查吧,多谢你。

    @JohnSwit
    1. 你说的对,在你打开查询的时候,会获取数据库中 所有的 表/列,用于键入提示,应该是由于太多了导致的。
    2. 这个我还没做,现在只有 表 / 列 / 关键字 / 函数 / 数据类型 的提示,且不区分语句位置。
    3. 现在还没有搜索功能,不过已经在做了。

    它会在 连接数据库时/打开查询时 获取 数据库中所有的表和列,并且当你执行查询(非获取数据) 的时候 还会刷新一次,用于更新键入提示的字段,考虑到你有这么多数据,我感觉很危险,为防止造成不必要的错误,建议现在不要再用它了,目前还不稳定,关于你上面所说的问题我都还没考虑到,我会尽快优化一下这些问题,再次感谢!
    wyhaya
        53
    wyhaya  
    OP
       229 天前
    @JohnSwit > 还有一点,能不能不要自动为我的表名或字段加上 '' 引号?改多几次,就会有很多引号,还得一个一个删掉,而且还会引起语句问题

    确实很烦人,加入待办事项!
    wyhaya
        54
    wyhaya  
    OP
       229 天前
    @faceair 我用的是 Rust 这边的开源的 MySQL 驱动,如果它不支持的话,我估计这很难弄了,我有时间会检查检查。
    faceair
        55
    faceair  
       228 天前 via iPhone
    @wyhaya 不是驱动问题,应该是创建完连接以后额外执行了一些 set 语句?这些语句可能不兼容
    sub166
        56
    sub166  
       228 天前
    加上 redis ,干翻 datagrip !
    russ44
        57
    russ44  
       228 天前
    Cool ,mark
    happy32199
        58
    happy32199  
       228 天前 via iPhone
    sql server 怎么显示库? 左侧只能选择 dbo 那些
    jorneyr
        59
    jorneyr  
       228 天前
    简单的提几个问题吧 (其实我最近在搞 Web 版的 SQL 编辑器,下面的 | 表示光标):

    1. 不支持列补全: "select * from tab t where |",输入 tab. 或者 t. 不会补全列提示。
    2. 列乱补全: "select * from tab t where i|",这个时候会把所有表里 i 开头的列都补全提示,而不是只提示 from 的 tab 里的列。
    3. 不知道跨 schema 补全提示: "select * from mysql.|",不会提示 mysql 下的表名。
    4. 重复补全提示: 例如 id 或者 name 等,会在补全列表里重复出现很多次。
    5. 出现不必要的补全提示: "INSERT INTO tab(|)",() 里应该只出现表 tab 的列,其他信息不应该在补全列表里。
    jorneyr
        60
    jorneyr  
       228 天前
    下面是已经实现的功能列表,仅供参考:

    ```
    | 功能 | 支持 | 说明 |
    | -------------------- | ---- | ------------------------------------------------------------ |
    | 数据缓存 | ✅ | Catalog > Schema > Table > Column 的数据都进行了缓存,快速提示,避免重复加载。 |
    | 跨 schema 提示 | ✅ | `schema.` 自动提示指定 schema 下的表名。 |
    | 表的别名 | ✅ | 可使用表名、表的别名触发列的补全提示。 |
    | 创建表的别名 | ✅ | 补全表名的时候,在 `FROM, JOIN, DELETE FROM` 等可以定义别名的地方自动为表名创建别名。 |
    | 表名补全 | ✅ | 表名补全支持 2 级: `table`, `schema.table` |
    | 列名补全 | ✅ | 列名补全支持 2 级: `column`, `table.column` |
    | 自动提示列 | ✅ | 在 `SELECT WHERE ORDER BY` 等子句里补全表名或表的别名时自动插入 `.` 并且自动弹出补全列表。 |
    | 自动加载表的列 | ✅ | 例如在 `FROM, JOIN, INSERT INTO` 中补全表名时,表示这个表的列需要被使用,后台自动预先加载相关表的列,在使用列补全的时候数据大多已经准备好可直接提示。 |
    | 嵌套子查询 | ✅ | 嵌套子查询中也会感知外部查询涉及到的表,可补全相关表和表的列。 |
    | 特殊名字 | ✅ | Oracle 的表名列名支持特殊字符如 `$`,数字开头,补全时会自动使用 `"` 括起来。 |
    | 静默加载 | ✅ | 自动从数据库加载需要补全的内容例如表的列,加载完成后会自动触发提示,加载中不强制提示。 |
    | 局部加载 | ✅ | 如果要补全 3 个表的列,有 1 个表已经加载 2 个未加载,则会立即提示已加载表的列,另外 2 个表的列静默加载。 |
    | 提示分类 | ✅ | 触发时未过滤的情况下根据 column, table, schema, function, keyword, operator 等分类显示。 |
    | 提示说明 | ✅ | 提示项的右边会有说明,例如列的类型。 |
    | 类型图标 | ✅ | 提示列表中不同的类型使用不同的图标,方便区分,schema, table, column, operator, keyword, function 等都使用不同的图标。 |
    | 简单推导 | ✅ | 支持一些简单推导,例如 SELECT 后面需要的列只提示涉及的表名和列,<br />`FROM, JOIN` 后面只需要表名等,`INSERT INTO` 表名后面的括号里只会补全列,`VALUES()` 括号里不进行补全。 |
    | SQL 模板插入 | ✅ | 例如补全 BETWEEN 时插入内容为 `(BETWEEN 光标 1 AND 光标 2)`,LIKE 插入 `LIKE '%光标%'` |
    | 关键字、函数、运算符 | ✅ | 支持常用的关键字、函数、运算法提示。补全函数时会自动插入括号,例如 `MAX()`。补全函数时补全列表里只有预定义的函数。 |
    | 模糊匹配 | ✅ | 提示过滤使用模糊查询,不需要严格匹配。 |
    | 快捷键 | ✅ | 快捷键 <kbd>CTRL+;</kbd> 触发补全提示。 |
    | 临时表 | ❌ | 不支持临时表的列补全。 |
    ```
    happy32199
        61
    happy32199  
       228 天前 via iPhone
    支持!建议界面在 navacit 基础上优化 重点是界面!!!
    我一般要同时连好几个库
    dbeaver 和 hedisql 界面太丑了 也不方便操作 存储过程执行也有 bug
    袋鼠不支持 sql server 界面相比 navacit 也不是很好
    x2ve
        62
    x2ve  
       228 天前 via iPhone
    一直用的 dbeaver ,不过楼主这个界面看着好看点
    wm5d8b
        63
    wm5d8b  
       228 天前 via Android
    能支持 arm64 的 Linux 吗
    22092
        64
    22092  
       228 天前
    希望 MSSQL Connections 支持 Hostname & path
    ABCSVR\MSSQL21
    xiaohundun
        65
    xiaohundun  
       228 天前
    @wyhaya 就是自动获取表数据,另外 run all sql 闪退,M1
    zoharSoul
        66
    zoharSoul  
       228 天前
    @happy32199 #61 反对, 根本不需要 navicat 那么多功能, 存储过程什么的不需要!!!
    保持现在轻量就很好
    wyhaya
        67
    wyhaya  
    OP
       228 天前
    @jorneyr 感谢,我目前的实现没有考虑到这么多,现在只有简单的提示 表/列/数据类型/关键字等,且不区分语句位置(在哪都可以提示) ,你提出的这个列表功能,我在后续会尽量加入。

    @happy32199 感谢,我记下了。

    @wm5d8b linux arm64 是我一直想加的,但是现在 tauri 还不支持构建 arm64 的 AppImage ,上游应该有点问题,我还没仔细研究。

    @22092 上上一版有,目前这个版本中我给删掉了,还有点 BUG 我没解决,后续会再加上。

    @xiaohundun 老哥,能联系一下吗? 我建了个群: https://t.me/dataflare
    qingRider
        68
    qingRider  
       228 天前
    我现在就想要个 redis 的工具,建议先做单一功能,要么 mysql ,要么 redis ,现在 redis 好工具很少,我有 datagrip 全家桶,所以用处不大。
    wyhaya
        69
    wyhaya  
    OP
       228 天前
    @qingRider 目前支持的数据库都实现起来都大体相同,所以基本上没什么需要单独处理的地方,而 Redis 和 MongoDB 这种的,需要有独立的 UI 和操作了,目前都没做,但是我很想做
    JYii
        70
    JYii  
       228 天前
    试用发现个问题,有个 MySQL 里面库很多,发现在写 sql 时索引一些列名会卡住
    wyhaya
        71
    wyhaya  
    OP
       228 天前
    @JYii 多谢
    lizhenda
        72
    lizhenda  
       227 天前
    做的确实不错,不过 tauri 还是不太合适做商业产品,界面对比 Electron 体验上明显卡很多。
    miaomiao2014
        73
    miaomiao2014  
       227 天前
    不错,我也来体验下吧。
    cyanten
        74
    cyanten  
       226 天前
    后继有上线移动端的计划吗? AppStore 上的数据库没一个好用的,tableplus 还是有点贵的
    wyhaya
        75
    wyhaya  
    OP
       226 天前
    @cyanten 暂时还没有,我想先把电脑端做好
    HiramWong
        76
    HiramWong  
       225 天前
    活动监视器看是启了本地一个端口,实际资源占用率有点偏高,待提升
    同时希望加入中文
    wyhaya
        77
    wyhaya  
    OP
       103 天前
    @marcong95 现在支持 SQLCipher 了
    marcong95
        78
    marcong95  
       103 天前
    @wyhaya 赞,我去试试~~
    Jagg3r
        79
    Jagg3r  
       39 天前
    好像 x86 版安装过程中需要下载依赖?有没有完整的安装包,因为必须要离线安装。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2868 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:49 · PVG 17:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.