Подтвердить что ты не робот

Какой лучший способ прочитать Sqlite3 непосредственно в браузере с помощью Javascript?

Для одной из наших платформ Insights мы планируем создавать сводные базы данных SQLite3 в фоновом режиме и позволять отображать их в браузере в виде диаграмм. В настоящее время мы намерены использовать серверную конечную точку, которая будет обслуживать требования к данным.

Мы стремимся оптимизировать это, устраняя конечную точку на стороне сервера. Мы в порядке (с точки зрения безопасности), чтобы разоблачить SQLite3 непосредственно на S3 и иметь модуль javascript для чтения и генерации диаграмм.

Ожидается, что файлы SQLite3 будут достаточно небольшими - возможно, 4-6 столбцов и, возможно, 10-500 строк данных, и все они содержат только одну таблицу. Тесты показывают размер файлов менее 15 КБ. Мы не собираемся писать или манипулировать SQLite3 в браузере. Нам не нужно кэшировать его в браузере как форму WebSQL или IndexedDB, но мы в порядке с их использованием, если это то, что необходимо.

Из моих поисков в Интернете мы не можем найти Javascript-библиотеку, которая может читать файл SQLite3 и запрашивать ее для получения результатов. Если вы знаете какие-либо библиотеки javascript, которые могут это сделать, сообщите нам об этом.

С другой стороны, если вы считаете, что мы не должны делать это по какой-либо причине, то, пожалуйста, бросьте их как комментарии/ответы тоже, потому что это то, что мы пытаемся в первый раз и, похоже, поэтому приветствуем приветствие!

4b9b3361

Ответ 1

Я не могу сказать лучше всего, но один: Создайте собственную библиотеку для чтения JavaScript SQLite. Это будет утомительная задача, но я уверен, что это можно сделать. Некоторые классные люди сделали pdf.js, который является рендерером JavaScript для файлов PDF, которые также являются двоичными BLOB типа SQLite файлы.

Скорее всего, вы начнете с FileReader API, чтобы пройти через файл SQLite, а затем создать некоторое представление содержимого в памяти, которое ваш инструмент диаграммы может использовать.

Отказ от ответственности: вы, вероятно, захотите решить свою первоначальную проблему с помощью другого решения, как это было предложено другими, но это отвечает на ваш вопрос.

Ответ 2

Существует библиотека 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();

Смотрите документацию на http://lovasoa.github.io/sql.js/documentation