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

  • 思源笔记

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

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

    23126 引用 • 93128 回帖 • 1 关注
  • Q&A

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

    8508 引用 • 38774 回帖 • 153 关注
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. 数据量巨大时可能存在性能问题。

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

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 大佬,能不能再加个可选择的功能:只添加,子文档,不添加子文档的子文档。

    如果添加子文档的子文档(套娃),很不好整理,往往只需要部分子文档的子文档。
    这样每次刷新都要删除一遍不想插入的,很麻烦,尤其是文档过多的时候。辛苦了!

    1 回复
  • 其他回帖
  • 感谢反馈!

    确实是,还不知道原因,我对比了下,自动导入的数据库文件和手动导入的文件没发现有任何区别,可能思源在其他地方也有关联吧,后续找到了问题再解决。

    不过,脚本更新了 0.0.2 版,这个版本采用临时方案,就是当修改文档名后,重新导入一次即可更新数据库中的文档名,如果你的导入脚本和数据库块在同一个文档内重新打开或刷新页面即可。

    2 回复
    1. 光标问题,先确定是否脚本引起的问题,新空间测试排除干扰项。如果确定有问题,请给出问题的详细描述和重现步骤。另外,脚本已更新到 version 0.0.5,试试是否有问题。
    2. 关于排除后代文档问题,首先,这个脚本并没有限制导入的内容,导入的内容由你的 SQL 查询决定的,即可以是文档内容,也可以是其他等。这里,你要想实现只导入直接子文档,而不导入后代子文档的话,可以在 SQL 中添加查询条件 and (LENGTH(path) - LENGTH(REPLACE(path, '/', ''))) / LENGTH('/') <= 2 来实现,不过我在 0.0.5 版本中默认加了这个功能,所以,你只需要把变量 const maxLevel 设置为 2,即 const maxLevel = 2 即可。注意,这个层级是从父文档开始算 1 级,然后往后嵌套最大层级数。

    再次重申,这个脚本具体导入数据库的内容,脚本并没限制,由你的 SQL 查询决定的,你可以导入任何你查询到的结果。

    另外, @ONIONLYONE @chenhao54180.0.5 使用官方 api 插入文档到数据库,彻底解决了 0.0.2 中,文档名修改后数据库无法更新名称的问题,并且插入文档后能自动刷新数据库,不再需要手动刷新页面。

    0.0.5 注意事项:

    1. 打开文档或刷新页面时默认不执行脚本,如果想要执行,把 runOnLoad 改为 true 即可
    2. 执行前弹出确认对话框,关闭的话,把 showConfirm 设为 false 即可
    3. 新增导入文档的排序方式,默认按照文档树里的顺序导入,如果想按 SQL 查询结果导入,把 sortByTreeOrder 设为 false 即可,该参数仅对导入文档有效,导入普通块无效。
    4. 新增导入文档的层级,默认 7 级,即从父文档 1 级,开始往下算,默认最大 7 级,如果想修改限制,修改 maxLevel 参数即可。
    5. 新增自定义备注,即当页面加载后,脚本上显示的提示文字,修改 memo 参数可自定义。
    6. 由于 0.0.5 抛弃了修改 json 的方式,使用官方 api 导入数据库,因此没有未知风险。但由于官方 api 没有统计成功和失败的文档数,因此结果只显示导入的文档数,不过一般不会失败,已导入的会忽略。

    后续可能新增功能:

    1. 可以把修改过的代码保存为模板,下次直接通过斜杠命令 =》模板 =》你保存的模板名直接打开,不用再复制粘贴。
    2. 执行前的预览和确认
    3. 从模板加载时,可根据需要弹出输入文档块 id 和数据库 id 的输入框,然后执行完后删除嵌入块即可,适合临时使用。
    1 回复
  • wilsons 1 赞同

    哈哈,感谢建议!先用着,做插件和解决问题复杂度完全不一样。

    就像产品和 demo 的区别,要做成产品就要通用,完善,兼容好,体验好,持续维护等。

    而,demo 或临时解决方案是针对某一问题的。

    可能你花 10% 的时间就能解决问题,但如果要把解决方案做成产品要花 80% 以上甚至更多的时间才行。

    而且,业余做插件不易,我之前曾在空闲和有兴趣的时候做过不少插件(非思源的),后来发现维护和精力是个难题。如果不维护感觉不负责,维护的话有时实在精力有限。

    所以,我觉得如果业余做插件,精心维护好一两个就足矣,多了真应付不来,毕竟现在各类软件都升级很快,不维护,很快就各种问题了。

    借着这个问题,突然想到了这些,说一下自己的浅见,不一定正确哈 😄 。

  • 查看全部回帖

推荐标签 标签

  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 159 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 65 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 2 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    167 引用 • 1521 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 464 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 748 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 487 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 26 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 667 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 2 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 519 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 45 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 588 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 549 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 1 关注
  • Gzip

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

    9 引用 • 12 回帖 • 150 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 4 关注