Это хороший материал, который вы ищете.:) К сожалению, благодаря некоторым тенденциям в ~ 2010, насколько я знаю, нет активно поддерживаемого и поддерживаемого API для этого. Но ...
Если вы хотите заполнить ANSI SQL
на стороне клиента в памяти и хотите заполнить базу данных, вы можете запустить упомянутуюSQLite
.Возможно, это единственный вариант для вас (если вы не можете оставить некоторые требования).
Если вы можете позволить роскоши копировать данные, вы можете проверить AlaSQL
проект это поддерживает join
-s и некоторые функции ANSI SQL, но он не завершен и содержит известные разрушительные ошибки :
Обратите внимание, что в AlaSQL есть ошибки.Помимо некоторых ошибок, есть ряд ограничений:
AlaSQL имеет (длинный) список ключевых слов, которые необходимо экранировать, если они используются для имен столбцов.При выборе поля с именем key напишите вместо этого SELECT key
FROM ...Это также относится к таким словам, как value
, read
, count
, by
, top
, path
, deleted
, work
и offset
.Пожалуйста, ознакомьтесь с полным списком ключевых слов.
Можно ВЫБРАТЬ 1000000 записей или СОЕДИНИТЬ две таблицы с 10000 записями в каждой (Вы можете использовать функции потоковой передачи для работы с более длинными источниками данных - см. Test / test143.js)но имейте в виду, что рабочая нагрузка умножается, поэтому выбор из более чем 8 таблиц, содержащих по 100 строк в каждой, покажет плохую производительность.Это один из наших главных приоритетов для улучшения ситуации.
Ограниченная функциональность для транзакций (поддерживается только для localStorage) - Извините, транзакции ограничены, потому что AlaSQL переключился на более сложный подход для обработки ПЕРВИЧНЫХ КЛЮЧЕЙ / ИНОСТРАННЫХ КЛЮЧЕЙ.Транзакции будут полностью включены снова в следующей версии.
A (FULL) OUTER JOIN и RIGHT JOIN для более чем 2 таблиц не приведут к ожидаемым результатам.INNER JOIN и LEFT JOIN в порядке.
Пожалуйста, используйте псевдонимы, если вы хотите, чтобы поля с одинаковыми именами из разных таблиц (SELECT a.id AS a_id, b.id AS b_id FROM?).
В настоящее время AlaSQL не работает с JSZip 3.0.0 - пожалуйста, используйте версию 2.x.
Присоединение к sub-SELECT не работает.Пожалуйста, используйте структуру with (Пример здесь) или извлеките sub-SELECT в переменную и передайте его в качестве аргумента (Пример здесь).
AlaSQL использует библиотеку FileSaver.js для локального сохранения файлов из браузера.Помните, что в Safari 8.0 файлы не сохраняются.
Возможно, есть много других.Пожалуйста, помогите нам исправить их, представив проблему.Спасибо!
Мы планировали использовать его в одном проекте, но было больше проблем, чем решений (для нас) при представлении проекта в наш стек.Таким образом, мы отступили от этого.Так что у меня нет опыта производства с этим программным обеспечением ...
Раньше я надеялся, что Google Gears
будет поддерживать что-то вроде желаемой функции, но частично ее заменили на HTML5
хранилище на стороне клиента и, к сожалению, проект получил прекращено .
HTML5 WebSQL Database
будет иметьидеально подходит для вашего варианта использования, но, к сожалению, ограничен .В большинстве (?) Браузеров он все еще поддерживается в 2019 году. Некоторые примеры можно посмотреть здесь .Если вы можете позволить себе использовать устаревший API, это может быть решением, но я не очень рекомендую его, поскольку не гарантируется, что он будет работать ...
Когда наш проект запускается с такими же проблемаминам пришлось использовать localStorage и запрограммировать каждый «SELECT» вручную, что, конечно, совсем не было похоже на ANSI SQL ...
Если мы вернемся к исходной проблеме "[SQL] запросит данные стрелки напрямую" У меня нет адаптера, чтобы использовать его в качестве SQL ... Такие операции по-прежнему выполняются на стороне сервера и с wasm SQLite, я думаю, что это варианты.