29

对于我们的 Insights 平台之一,我们计划在后台生成汇总 SQLite3 数据库,并让它在浏览器上呈现为图表。目前,我们打算创建一个服务于数据需求的服务器端端点。

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

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

从我的网络搜索中,我们找不到可以读取 SQLite3 文件并查询结果的 Javascript 库。如果您知道任何可以执行此操作的 javascript 库,请告诉我们。

另一方面,如果您认为我们不应该出于任何原因这样做,那么也请把它们作为评论/答案扔掉,因为这是我们第一次尝试的东西,看起来有点不合时宜-box,欢迎反馈!

4

2 回答 2

31

有一个名为的 javascript 库sql.js可以完全满足您的需求。在你的情况下,你会这样使用它

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/上的文档

于 2014-05-26T23:44:12.433 回答
2

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

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

免责声明:您可能希望使用其他人提出的另一种解决方案来解决您最初的问题,但这回答了您的问题。

于 2013-02-08T07:18:03.727 回答