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

Shr*_*eni 22 javascript sqlite

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

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

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

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

另一方面,如果你认为我们不应该出于任何原因这样做,那么请把它们作为评论/答案抛出,因为这是我们第一次尝试的东西,似乎有点不合适-box,欢迎反馈!

lov*_*soa 19

有一个调用的javascript库sql.js可以完全按照你的意愿行事.在你的情况下,你会这样使用它

var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/database.sqlite', true);
xhr.responseType = 'arraybuffer';

xhr.onload = function(e) {
  var uInt8Array = new Uint8Array(this.response);
  var db = new SQL.Databse(uInt8Array);
  var contents = db.exec("SELECT * FROM my_table");
  // contents is now [{columns:['col1','col2',...], values:[[first row], [second row], ...]}]
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)

请参阅http://lovasoa.github.io/sql.js/documentation上的文档

  • +10。这就是解决方案。lovasoa 的提交已合并到原始 sql.js 中,请在 https://github.com/kripken/sql.js 获取。上面的例子只需要通过一种方式修改:在顶部添加`var SQL = window.SQL;`(当然是在包含sql.js文件并更改`my_table`之后)。效果很好(我用的是 Chrome)。 (4认同)

Mar*_*cel 2

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

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

免责声明:您可能想用其他解决方案来解决您最初的问题,正如其他人提出的那样,但这回答了您的问题。

  • 我查看了 sql.js 库,但文档似乎很少。谁能指出任何好的实际例子吗?特别是,我想知道如何通过 ajax 调用从服务器获取 sqlite 文件并使用 sql.js 查询它 (2认同)