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

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

  •  
  •   wyhaya · 2023-09-11 10:53:34 +08:00 · 6366 次点击
    这是一个创建于 447 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    https://dataflare.app

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

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

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

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

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

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

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

    确实很烦人,加入待办事项!
    wyhaya
        54
    wyhaya  
    OP
       2023-09-11 17:49:02 +08:00
    @faceair 我用的是 Rust 这边的开源的 MySQL 驱动,如果它不支持的话,我估计这很难弄了,我有时间会检查检查。
    faceair
        55
    faceair  
       2023-09-11 18:37:11 +08:00 via iPhone
    @wyhaya 不是驱动问题,应该是创建完连接以后额外执行了一些 set 语句?这些语句可能不兼容
    sub166
        56
    sub166  
       2023-09-11 20:21:20 +08:00
    加上 redis ,干翻 datagrip !
    russ44
        57
    russ44  
       2023-09-11 21:43:28 +08:00
    Cool ,mark
    happy32199
        58
    happy32199  
       2023-09-11 22:52:52 +08:00 via iPhone
    sql server 怎么显示库? 左侧只能选择 dbo 那些
    jorneyr
        59
    jorneyr  
       2023-09-11 22:54:48 +08:00
    简单的提几个问题吧 (其实我最近在搞 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  
       2023-09-11 22:59:56 +08:00
    下面是已经实现的功能列表,仅供参考:

    ```
    | 功能 | 支持 | 说明 |
    | -------------------- | ---- | ------------------------------------------------------------ |
    | 数据缓存 | ✅ | 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  
       2023-09-11 23:03:28 +08:00 via iPhone
    支持!建议界面在 navacit 基础上优化 重点是界面!!!
    我一般要同时连好几个库
    dbeaver 和 hedisql 界面太丑了 也不方便操作 存储过程执行也有 bug
    袋鼠不支持 sql server 界面相比 navacit 也不是很好
    x2ve
        62
    x2ve  
       2023-09-11 23:58:31 +08:00 via iPhone
    一直用的 dbeaver ,不过楼主这个界面看着好看点
    wm5d8b
        63
    wm5d8b  
       2023-09-12 07:55:38 +08:00 via Android
    能支持 arm64 的 Linux 吗
    22092
        64
    22092  
       2023-09-12 09:54:48 +08:00
    希望 MSSQL Connections 支持 Hostname & path
    ABCSVR\MSSQL21
    xiaohundun
        65
    xiaohundun  
       2023-09-12 10:12:16 +08:00
    @wyhaya 就是自动获取表数据,另外 run all sql 闪退,M1
    zoharSoul
        66
    zoharSoul  
       2023-09-12 11:09:18 +08:00
    @happy32199 #61 反对, 根本不需要 navicat 那么多功能, 存储过程什么的不需要!!!
    保持现在轻量就很好
    wyhaya
        67
    wyhaya  
    OP
       2023-09-12 11:28:33 +08:00
    @jorneyr 感谢,我目前的实现没有考虑到这么多,现在只有简单的提示 表/列/数据类型/关键字等,且不区分语句位置(在哪都可以提示) ,你提出的这个列表功能,我在后续会尽量加入。

    @happy32199 感谢,我记下了。

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

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

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