Какой простейший способ импортировать файл SQLite SQL в базу данных Web SQL

StackOverflow https://stackoverflow.com/questions/2834534

Вопрос

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

Чтобы проверить, были ли на стороне клиентских баз данных для задачи, я создал несколько фиктивных таблиц с фиктивными данными, используя 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!");
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top