什么'这是使用Javascript直接在浏览器中读取Sqlite3的最佳方式

What's the best way to read Sqlite3 directly in Browser using Javascript?

本文关键字:浏览器 读取 Sqlite3 方式 最佳 Javascript 什么      更新时间:2023-09-26

对于我们的一个Insights平台,我们计划在后台生成摘要SQLite3数据库,并将其在浏览器上呈现为图表。目前,我们打算使用一个服务器端端点来满足数据需求。

我们希望通过完全消除服务器端端点来进一步优化这一点。从安全角度来看,我们可以直接在S3上公开SQLite3,并让javascript模块读取和生成图表。

SQLite3文件预计相当小——可能有4-6列,可能有10-500行数据,并且所有文件都只包含一个表。测试运行表明文件大小小于15KB。我们不打算在浏览器上编写或操作SQLite3。我们不需要将其作为WebSQL或IndexedDB表单缓存在浏览器上,但如果需要的话,我们可以使用它们。

从我的网络搜索中,我们无法找到一个可以读取SQLite3文件并查询结果的Javascript库。如果您知道有任何javascript库可以做到这一点,请告诉我们。

另一方面,如果你认为无论出于何种原因,我们都不应该这样做,那么也请把它们作为评论/答案扔出去,因为这是我们第一次尝试,似乎有点开箱即用,所以欢迎反馈!

有一个名为sql.js的javascript库,它可以完全执行您想要的操作。在你的情况下,你会像一样使用它

const SQL = await initSqlJs(options);
const fetched = await fetch("/path/to/database.sqlite");
const buf = await fetched.arrayBuffer();
const db = new SQL.Database(new Uint8Array(buf));
const contents = db.exec("SELECT * FROM my_table");
// contents is now [{columns:['col1','col2',...], values:[[first row], [second row], ...]}]

请参阅sql-js.github.io/sql.js/documentation/

上的文档

我不能说出最好的,但有一个:自己写一个JavaScriptSQLite阅读器库这将是一项乏味的任务,但我相信它是可以完成的。一些很酷的人做了pdf.js,这是一个pdf文件的JavaScript渲染器,它也是二进制BLOB,就像SQLite文件一样。

您很可能会从FileReader API开始遍历SQLite文件,然后创建一些内容的内存表示,您的图表工具可以使用这些内容。

免责声明:你可能想按照其他人的建议,用另一个解决方案来解决你最初的问题,但这回答了你的问题