¿Cuál es la forma más sencilla de importar un file SQLite SQL en una database WEB SQL?

quizás me falta algo, pero necesito una database del lado del cliente pre-poblada con una carga de datos.

Para probar si las bases de datos del lado del cliente estaban a la altura de la tarea, creé algunas tablas ficticias con datos ficticios utilizando el método transaction.executeSql() . Pero por lo que puedo deducir, requiere una llamada executeSQL para cada consulta CREATE TABLE e INSERT INTO. Soy flojo, y eso me parece demasiado trabajo.

Me pregunto …: puedo crear una tabla SQLite bastante rápido usando una GUI de SQLite. Intenté exportar un file SQL y ejecutarlo todo en una sentencia executeSQL, pero eso solo procesa el primer bit 'CREATE TABLE', ninguna de las inserciones.

¿Existe algún método especial del object de transacción del que no tengo conocimiento para ejecutar múltiples consultas a la vez?

Esto es para Mobile Safari comprar el path, que de acuerdo con Apple utiliza una database SQLite para alimentar sus cosas de database del lado del cliente.

Puse todo el código sql en un file con un command por línea y luego utilicé ajax para extraer el file y el bucle sobre cada línea ejecutando el sql

consejo: use el command if not exists para que pueda llamarlo cada vez para iniciar su database

En la command-line (en un cuadro de Linux), use

 sqlite3 myDatabase.sqlite .dump > myDatabase.sql 

Ahora tiene el file sqlite volcado en un file sql simple. Contendrá las sentencias create table y las instrucciones de inserción.

Luego, algún código del lado del cliente (probablemente necesite algún ajuste, pero obtendrá la idea)

Primero, toma el volcado sql. (ejemplo usando 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'); }); 

La function processQuery procesa todas las instrucciones una a una, e ignora silenciosamente los errores.

 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!"); } } 
    Intereting Posts