Какой простейший способ импортировать файл SQLite SQL в базу данных Web SQL
-
26-09-2019 - |
Вопрос
Возможно, я что-то упускаю, но мне нужен база данных сторон клиента, предварительно заполненная нагрузкой данных.
Чтобы проверить, были ли на стороне клиентских баз данных для задачи, я создал несколько фиктивных таблиц с фиктивными данными, используя transaction.executeSql()
метод. Но из того, что я могу собрать, это требует вызова executeql для каждых сингл создания таблицы и вставить в запрос. Я ленивый, и это кажется слишком много работы для меня.
Мне интересно ...: Я могу создать таблицу SQLite довольно быстро, используя SQLite GUI. Я пробовал экспортировать файл SQL и запустив все в одном операторе executeql, но это просто обрабатывает первое «Create Table» не вставок.
Существует ли какой-то специальный метод объекта транзакции, что я не знаю для запуска нескольких запросов одновременно?
Это для мобильных сафари, купить путь, который Согласно Apple. Использует базу данных SQLite для питания их материальных баз данных на стороне клиента.
Решение
Я положил весь код SQL в файл с одной командой в строке, а затем использовал AJAX, чтобы потянуть файл и цикл через каждую строку, выполняющую SQL
Совет: используйте e, если не существует, чтобы вы могли назвать его каждый раз, чтобы инимировать вашу базу данных
Другие советы
В командной строке (в поле Linux), используйте
sqlite3 myDatabase.sqlite .dump > myDatabase.sql
Теперь у вас есть файл SQLite сбрасывается в простой файл SQL. Он будет содержать операторы Create Table и утверждения вставки.
Затем какой-то код клиента (вероятно, понадобится некоторую регулировку, но вы получите идею)
Сначала возьмите дамп SQL. (Пример с помощью jQuery)
$.get('./dumps/myDatabase.sql', function(response) {
// console.log("got db dump!", response);
var db = openDatabase('myDatabase', '1.0', 'myDatabase', 10000000);
processQuery(db, 2, response.split(';\n'), 'myDatabase');
});
Функция процесса процесса процесса процесса процесса все операторы по одному, и молча игнорирует ошибки.
function processQuery(db, i, queries, dbname) {
if(i < queries.length -1) {
console.log(i +' of '+queries.length);
if(!queries[i+1].match(/(INSERT|CREATE|DROP|PRAGMA|BEGIN|COMMIT)/)) {
queries[i+1] = queries[i]+ ';\n' + queries[i+1];
return processQuery(db, i+1, queries, dbname);
}
console.log('------------>', queries[i]);
db.transaction( function (query){
query.executeSql(queries[i]+';', [], function(tx, result) {
processQuery(db, i +1, queries,dbname);
});
}, function(err) {
console.log("Query error in ", queries[i], err.message);
processQuery(db, i +1, queries, dbname);
});
} else {
console.log("Done importing!");
}
}