如何导入导出浏览器indexedDB数据库中的数据
var DB;
var DBName = '';
var TableName = '';
async function openDatabase() {
return new Promise((resolve, reject) => {
const request = indexedDB.open(DBName);
request.onsuccess = (event) => {
DB = event.target.result;
console.log(`${DBName} 数据库已打开。`);
resolve(DB);
};
request.onerror = (event) => {
console.error(`无法打开数据库 ${DBName}: `, event.target.error);
reject(event.target.error);
};
});
}
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);
});
}
try {
await openDatabase();
console.log("数据库初始化完成,可以进行后续操作");
} catch (error) {
console.error("数据库初始化失败", error);
}
使用方法:
let data;
//查询
data = await getAllData(DB);
console.log(data);
//导入
data = JSON.parse(fileData);
let result = await input(DB, data);
console.log(`导入完成。成功:${result.success} 条,失败:${result.error} 条。`);
//导出
output(DB);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)