思源如何筛选出未加入数据库的文档?或者有没有办法一键将所有子文档都添加到数据库中(类似目录插件功能)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22252 引用 • 88940 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    8075 引用 • 36885 回帖 • 162 关注
1 操作
ONIONLYONE 在 2024-08-31 16:25:37 更新了该帖
被采纳的回答
  • wilsons 2

    补充说明:

    该贴不再维护,有需要的用户请移步至 批量导入文档到数据库 0.0.6 版全新发布


    关于一键将所有子文档都添加到数据库中,今天我试着实现了这个功能。

    代码如下

    使用方法:

    把上述代码粘贴到嵌入 SQL 代码块中即可(任意文件都可),即输入{{}}后在弹出的输入框中填入即可。

    然后修改变量 docBlockId 为你要导入的父文档块 id,变量 dbBlockId 为你要导入的数据库的块 id。变量 docsSql 为你要查询的 SQL 语句逻辑,请根据实际情况修改,详情请看代码注释。

    然后,执行结果如下,然后重新打开或按 F5 刷新数据库所在页面即可查看到导入结果。

    image.png

    注意事项:

    1. 数据导入有风险,请做好备份工作再进行尝试。
    2. 数据量巨大时可能存在性能问题。

    再次提醒!!!请在新空间测试无误后使用,使用前请做好备份!!!

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Afterglow 2 1 赞同

    挂件-列出子文档-常规设置-模式-数据库,即可一键将子文档添加到下方的数据库

    1 回复
  • 其他回帖
  • 刚发现一个小问题 😂 ,就是插入后,如果子文档笔记重新命名,数据库的名字还是原来的,一直 F5 刷新,也不行!

    image.png

    1 回复
  • wilsons 2

    查询未加入数据库的文档,这个用普通的 SQL 是无法查询的,因为数据库中的文档在 sqlite 中并没有索引。

    这个需要从数据库文件中读取插入的文档,然后在 SQL 查询中再排除这些文档就行了。

    下面是个解决方案的示例,不知是否满足你的需求。

    代码如下(链滴字数限制,只能把代码放到其他平台了):

    使用方法:

    将上述代码放到 SQL 块中即可,即输入{{}}后,在弹出的 SQL 输入框中输入即可。

    代码说明:

    这个示例也可以解决你问题修改前的那种查询方式,只需要把 and path like '/xxxx-xxxx%' 开启即可,如果不包含父文档自身,把 and id != 'xxxx-xxxx' 开启即可,详情见代码注释说明。

    其实,这个查询方式的本质和正常查询没有任何区别,无非在最后加了排除数据库文档的条件罢了。

    开启 formatByTitle(result);,查询的结果是显示文档的标题,不开启查询的结果是显示文档的内容,思源默认的是显示文档的内容。

    另外,如果数据量巨大,这种方式可能存在性能问题,数据量巨大的情况下,最好的方法是提前对数据库内容做索引,由于方法复杂,如果有需求请自行研究实现。

    效果如下:

    开启 formatByTitle(result);结果

    image.png

    未开启 formatByTitle(result);结果

    image.png

    关于,一键将所有子文档都添加到数据库,目前只能通过 ctrl+ 点击多选,然后拖动到数据库里,其它应该尚未有更好办法吧,期待大佬们有更好解决方式!

    或许可以通过修改数据库 json 的方式实现吧,但这样修改文件可能存在未知风险,你如果不在意的话倒是可以尝试下。

    1 回复
    1 操作
    wilsons 在 2024-08-31 17:41:18 更新了该回帖
  • 只更改导入的那个数据库的 json 文件,其实只需要备份这个文件即可。其他没任何影响,对文档及数据块没有影响。 这个文档的路径就是 /data/storage/av/数据库id.json 注意,这里是数据库 id,不是数据库块 id。

    可以通过数据库块 id,然后查询 markdown 字段查看数据库 id,SQL 查询 select markdown from blocks where id = '数据库块id';,如下图箭头指向的方向就是数据库 id,然后数据库存放路径是/data/storage/av/数据库 id.json

    image.png

    1 回复
  • 查看全部回帖

推荐标签 标签

  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    222 引用 • 473 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    339 引用 • 708 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    63 引用 • 348 回帖 • 1 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 133 关注
  • 创业

    你比 99% 的人都优秀么?

    84 引用 • 1399 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 707 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 617 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 391 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 537 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 327 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 532 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 670 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    5 引用 • 107 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 9 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    943 引用 • 943 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    541 引用 • 672 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 653 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 4 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 390 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 628 关注