首页 > 数据库 >如何导入导出浏览器indexedDB数据库中的数据

如何导入导出浏览器indexedDB数据库中的数据

时间:2024-10-25 19:10:41浏览次数:1  
标签:indexedDB const objectStore db 导入 error 浏览器 data event

var DB;
var DBName = '';
var TableName = '';

indexedDB.open(DBName).onsuccess = async function (event) {
    DB = event.target.result;
};


//导入
let data = JSON.parse(fileData);//json字符串形式的数据
let result = await input(DB, data);
console.log(`导入完成。成功:${result.success} 条,失败:${result.error} 条。`);

//导出
output(DB);


async function input(db, data) {
    let success = 0;
    let error = 0;
    for (let i = 0; i < data.length; i++) {
        const transaction = db.transaction(TableName, 'readwrite');
        const objectStore = transaction.objectStore(TableName);
        try {
            await addData(objectStore, data[i]);
            success++;
        } catch (err) {
            error++;
            console.error(`插入第 ${i + 1} 条数据失败。`, err);
        }
    }
    return { success, error };
}

function addData(objectStore, item) {
    return new Promise((resolve, reject) => {
        const request = objectStore.add(item);
        request.onsuccess = () => resolve();
        request.onerror = (event) => reject(event.target.error);
    });
}

async function output(db) {
    try {
        const data = await getAllData(db);
        const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
        const a = document.createElement('a');
        a.href = URL.createObjectURL(blob);
        a.download = 'indexedDB_Output.json';
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        console.log("数据成功导出!");
    } catch (err) {
        console.error("导出数据失败:", err);
    }
}

function getAllData(db) {
    return new Promise((resolve, reject) => {
        const transaction = db.transaction(TableName, 'readonly');
        const objectStore = transaction.objectStore(TableName);
        const request = objectStore.getAll();
        request.onsuccess = (event) => resolve(event.target.result);
        request.onerror = (event) => reject(event.target.error);
    });
}

标签:indexedDB,const,objectStore,db,导入,error,浏览器,data,event
From: https://www.cnblogs.com/dawn-lc/p/18503138

相关文章

  • 高效集成:聚水潭采购入库数据导入MySQL案例
    聚水潭数据集成到MySQL的技术案例分享在企业数据管理中,如何高效、准确地将业务系统的数据集成到分析平台是一个关键问题。本篇文章将聚焦于一个具体的系统对接集成案例:将聚水潭的采购入库单数据集成到MySQL数据库中,以便在BI勤威平台上进行进一步的数据分析和处理。案例背景本......
  • exports导出和module.exports导出和require导入
    exports导出module.exports导出require细节情况一情况二情况三......
  • ThinkPHP怎么导入第三方类库
    ​ThinkPHP框架为PHP开发者提供了高效率、简单、安全的技术解决方案,其中包括方便的第三方类库导入功能。文章将指导你:1.了解Composer和ThinkPHP的关联;2.手动导入类库的步骤;3.使用Composer自动导入;4.调用第三方类库;5.避免常见错误。首先,我们需要了解Composer的基本功能和作用。1......
  • 使用本地浏览器打开远程服务器生成的网页——详细教程
    使用本地浏览器打开远程服务器生成的网页——详细教程在日常开发或运维中,我们常常需要访问部署在远程服务器上的网页应用,例如JupyterNotebook、Web服务等。通过SSH端口转发,我们可以在不暴露远程服务器端口的情况下,使用本地浏览器直接访问远程服务器生成的网页。本文将......
  • 「效率集」聚合搜索,浏览器必备的资源与信息搜索插件
    简介「效率集」聚合搜索是当前浏览器上最强的查资源找信息插件。它内置了上百款搜索引擎,支持聚合搜索。一键全网搜索全网可用资源,真正让用户实现电影,电视剧,音乐,电子书,网盘,磁力等资源的自由,也可以用于购物比价,特惠信息,新闻,学术资料等信息搜索。插件内置几十款国内外知名AI大模型......
  • TruneNAS导入池时出错[ libzfs.ZFSException: ('IO error',) ]
    简述:某天TrueNAS无故宕机,经检查服务器内存检测失败(32G只识别了16G),除灰,重插内存,系统启动成功,登录后池error,手动导入报错。问题借图,本地报错与该图一致,导入池错误代码参考代码块错误:concurrent.futures.process._RemoteTraceback:"""Traceback(mostrecentcalllast)......
  • Chrome浏览器跨越设置
    如何设置Chrome浏览器跨域AccesstoXMLHttpRequestat'xxxxxx'fromorigin'null'hasbeenblockedbyCORSpolicy:Crossoriginrequestsareonlysupportedforprotocolschemes:chrome,chrome-extension,chrome-untrusted,data,http,https,isol......
  • 海康威视AI开放平台训练数据集导入问题---解决导入自己数据集的问题(txt转json格式)
    一、问题导入首先我们先进入到开放平台中,选择物体检测最近在做一个项目,需要使用到海康威视AI开放平台来训练数据集,但是刚开始遇到了一个问题就是导入自己的数据集(txt格式转成了json格式)为啥没有用,后面查看相关文档,解决了导入自己数据集的问题,就不用在平台里标注了。二、探......
  • 在Windows中,可以使用PowerShell来迁移打印机设置,以下是用于导出和导入打印机配置的Pow
    在Windows中,可以使用PowerShell来迁移打印机设置,以下是用于导出和导入打印机配置的PowerShell代码示例。导出打印机设置使用以下命令导出当前打印机设置到一个文件:powershellCopyCodeGet-Printer|Export-Clixml-Path"C:\path\to\exported_printers.xml"导入打印机设置......
  • 更改Google谷歌浏览器安装位置
    谷歌浏览器默认是安装C盘的,越用占用的空间越大,所以需要手动迁移到非系统盘。1、在官网下载安装包:GoogleChrome网络浏览器2、下载后,双击安装,默认安装到C盘里面的,中途不能自定义安装。3、安装好后会在桌面生成一个谷歌浏览器的快捷方式:将鼠标移到谷歌浏览器快捷方式图标上→......