批量导入文档到数据库 0.0.6 版全新发布

前言

这个脚本的作用就是批量导入文档或块到数据库,包括后代文档等,可以通过限定嵌套层数或通过 SQL 等对导入内容加以限制。

在之前的这个帖子中(该贴不再维护和更新),我实现了 0.0.5 版本,这个版本已经很完善了,只不过使用需通过代码配置,体验上差了些。0.0.6 在这个基础上做了功能扩展,改善了使用体验。

使用效果,先上图

r41.gif

完整代码

使用方法

基本使用

  1. 下载这个文件批量导入文档到数据库.md.zip,放到/data/templates 目录
  2. 然后在使用的文档中输入斜杠命令 / 》模板 》选择“批量导入文档到数据库”模板即可
  3. 或者复制上面的代码,然后输入/{{}},在弹出的对话框中输入上面的代码即可
  4. 事实上就是 SQL 查询脚本,可以在任何文档中使用,按照脚本提示或注释说明使用即可

这个脚本非常灵活,可以调整不同的参数满足不同的需求。

但通常有四大使用场景,这里重点介绍下。

四大使用场景

一、临时使用

需要要修改参数:

let docBlockId = '';

let dbBlockId = '';

const isShowInputBox = true;

注意,docBlockId 和 dbBlockId 至少一个内容保持为空即可

然后可以保存为模板,然后每次使用时从模板导入即可。

使用演示:

r43.gif

二、自动导入

这个功能,可以满足当打开某个文档或刷新文档时,自动导入某个文档下面的文档到数据库。

需要修改参数:

let docBlockId = 'xxxxxxxxx-xxxx';

let dbBlockId = 'xxxxxxxxx-xxxx';

const runOnLoad = true;

注意,docBlockId 和 dbBlockId 不能为空,runOnLoad 需要设置为 true

使用演示:

r44.gif

三、手动执行

这个没有特别要求,任何参数配置情况下点击右侧的刷新按钮都可以手动执行。

使用演示:

r45.gif

四,自定义导入

这个就要参考代码中的参数配置和注释并根据自身情况进行设置了,脚本的本质就是根据 SQL 查询语句的内容进行导入的,在这里你可以通过编辑 SQL 进行自定义查询,然后导入。

image.png

使用技巧

你可以根据自身的需要对参数或代码进行修改,然后修改完成后,通过到导出到模板按钮保存为不同的模板,以满足不同场景下的需求和复用。

image.png

另外,可以在导出模板时修改 shortName 参数和 memo,让不同模板显示不同的名称和备注信息,这样就能很好区分,当前使用的脚本是哪个模板了。

免责声明

文件读写有风险!导入前请做好备份!请在新空间测试无误后再使用!本脚本仅用于学习交流,造成的任何后果均与脚本及作者无关。

  • 思源笔记

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

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

    22253 引用 • 88945 回帖
  • 脚本
    20 引用 • 147 回帖 • 1 关注
  • SQL
    126 引用 • 381 回帖 • 3 关注
  • 数据库

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

    339 引用 • 708 回帖 • 1 关注

相关帖子

优质回帖
  • 5kyfkr 1

    是漏子文档下的一个文档,父文档 A,底下有 A1 A2 A3,然后会漏一个 A3,并且添加的时候预览里面会多个“未命名”文档,实际点确认后不会被添加到数据库

  • wilsons 1

    我就是把这个注释去了然后出现上面的问题 ,问了 AI 感觉需要改的挺多,怕改坏了

    @5kyfkr

    已修复,那个未命名文件是 bug 多出的,这个是因为 SQL 排除了父文档后,在排序的过程中没有排除父文档导致父文档重新出现,现已修复,你重新复制上面的代码再试试。

    同时修复了层级限制的 bug,漏导入可能是这个 bug 引起的。

  • 5kyfkr 1

    大佬您好,我又发现个问题了,在第二层文档设置为父文档的时候检索不到第三层文档,如下图,设置父文档是 2 的时候找不到文档 3 和他自己,只有设置为父文档 1 的时候能找到文档 2 和文档 3

    image.png

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 非常好 支持 加油

  • 其他回帖
  • 找到思源笔记添加绑定块的 api 了,建议用这个,目前你的代码如果文档块删除后,还没更新索引,sql 能查到,但是这个 id 是不存在的,就会内核中断。用 api 没有这个问题

    数据库添加绑定块/api/av/addAttributeViewBlocks

    • avID:数据库 id,非数据库块 id,可在 DOM 中找
    • blockID:数据库块 id,非添加的块 id
    • srcs
      • id:块 id
      • isDetached
        • false:是绑定块
        • true:是非绑定块
    const docids = ['20240928004914-pwh0yxz']
    const srcs = docids.map(docId => ({
        "id": docId,
        "isDetached": false,
    }));
    avid = '20240928104630-r293qm7' // 数据库
    avblockID = '20240928111535-ts1vz4e' // 数据库块id
    
    
    const input = {
      "avID": avid,
      "blockID": avblockID,
      'srcs': srcs
      
    }
    const result =await fetchSyncPost('/api/av/addAttributeViewBlocks', input)  
    
    1 回复
  • mark-j

    新建文本文档.zip

    image.png想把电影标签的块,导入,但是错误!image.png

    1 回复
  • wilsons

    抱歉,前几天忙,忽略了这个问题,今天才想起来。

    如果用笔记本 id 作为父文档导入需要改造,下面是我调整好的代码,如果想了解调整内容,可以用软件对比下看。

    然后,只需把下面这两个参数填入对应的 id 值即可。

    //(1) 定义数据库块id,必填,根据自己的数据库块id进行修改
    let dbBlockId = '';
    
    //(2) 笔记id
    const box = '';
    

    代码如下:

    【警告】:这个版本是针对笔记本文档批量导入数据库的,普通的文件夹父文档不要使用这个脚本!!!

    【警告】:这个版本是针对笔记本文档批量导入数据库的,普通的文件夹父文档不要使用这个脚本!!!

    代码备份地址:https://gitee.com/wish163/mysoft/blob/master/%E6%89%B9%E9%87%8F%E5%AF%BC%E5%85%A5%E6%96%87%E6%A1%A3%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%930.0.6-%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%89%88.js

    关于你说的 vscode 代码乱问题,可能和 IDE 环境有关,比如回车换行,tab 缩进等的不同造成的。

    可在 vscode 中使用右键选择“使用...格式化文档”,然后选择你喜欢的风格进行格式化即可。

    image.png

  • 查看全部回帖