Это хороший материал, который вы ищете. :) К сожалению, благодаря некоторым тенденциям в ~ 2010 году, насколько мне известно, для этого нет активно поддерживаемого и поддерживаемого API. Но...
Если вы хотите иметь полный ANSI SQL
на стороне клиента в памяти и хотите заполнить базу данных, вы можете запустить упомянутый SQLite
. Возможно, это единственный удовлетворяющий вас вариант (если вы не могли оставить некоторые требования).
Если бы вы могли позволить себе роскошь копировать данные, вы могли бы проверить проект AlaSQL
, < strong>поддерживает join
-s и некоторые функции ANSI SQL, но не является полным и содержит известные нарушающие работу ошибки:
Имейте в виду, что в AlaSQL есть ошибки. Помимо некоторых ошибок, есть ряд ограничений:
AlaSQL имеет (длинный) список ключевых слов, которые необходимо экранировать, если они используются для имен столбцов. При выборе поля с именем key напишите вместо него SELECT key
FROM .... Это также относится к таким словам, как value
, read
, count
, by
, top
, path
, deleted
, work
и offset
. Пожалуйста, ознакомьтесь с полным списком ключевых слов.
МОЖНО ВЫБРАТЬ 1000000 записей или СОЕДИНИТЬ две таблицы по 10000 записей в каждой (вы можете использовать потоковые функции для работы с более длинными источниками данных — см. таблицы всего со 100 строками в каждой будут показывать плохую производительность. Это один из наших главных приоритетов, чтобы стать лучше.
Ограниченная функциональность для транзакций (поддерживается только для localStorage) — Извините, транзакции ограничены, т.к. AlaSQL перешла на более сложный подход к обработке PRIMARY KEYs / FOREIGN KEYs. Транзакции будут снова полностью включены в будущей версии.
(ПОЛНОЕ) ВНЕШНЕЕ СОЕДИНЕНИЕ и ПРАВОЕ СОЕДИНЕНИЕ более чем двух таблиц не дадут ожидаемых результатов. INNER JOIN и LEFT JOIN в порядке.
Пожалуйста, используйте псевдонимы, если вам нужны поля с одинаковыми именами из разных таблиц (ВЫБРАТЬ a.id AS a_id, b.id AS b_id FROM ?).
На данный момент AlaSQL не работает с JSZip 3.0.0 - используйте версию 2.x.
JOINing sub-SELECT не работает. Используйте структуру with (пример здесь) или извлеките вложенный SELECT в переменную и передайте ее в качестве аргумента (пример здесь).
AlaSQL использует библиотеку FileSaver.js для локального сохранения файлов из браузера. Имейте в виду, что он не сохраняет файлы в Safari 8.0.
Вероятно, есть много других. Пожалуйста, помогите нам исправить их, отправив сообщение о проблеме. Благодарю вас!
Мы планировали использовать его в одном проекте, но проблем было больше, чем решений (для нас) при введении проекта в наш стек. Поэтому мы от него отвернулись. Так что у меня нет опыта работы с этим программным обеспечением...
В прежние времена я надеялся, что Google Gears
будет поддерживать что-то вроде желаемой функции, но частично он был заменен HTML5
хранилищем на стороне клиента, и, к сожалению, проект получил прекращено.
HTML5 WebSQL Database
был бы идеальным для вашего использования -case, но, к сожалению, он устарел. Хотя большинство (?) браузеров по-прежнему поддерживают его в 2019 году. Вы можете посмотреть несколько примеров здесь . Если вы можете позволить себе использовать устаревший API, это может быть решением, но я не очень рекомендую его, поскольку нет гарантии, что он будет работать...
Когда наш проект запустился с теми же проблемами, нам пришлось использовать localStorage и программировать каждый "SELECT" вручную, что, конечно, совсем не похоже на ANSI SQL...
Если мы вернемся к исходной проблеме "[SQL] запрашивают данные Arrow напрямую", я не имею в виду адаптер для использования его в качестве SQL... Подобные операции по-прежнему, как правило, выполняются на сервере. стороны и с wasm SQLite, я думаю, это варианты.
person
Hash
schedule
23.06.2019
Tom
? Вероятно, есть более органичные способы JS для решения вашей реальной проблемы. - person rob3c   schedule 23.06.2019