2008-09-18 6 views
1

Essayer l'approche facile:Comment gérer UTF-8 dans sqlite2 à sqlite3 migration

sqlite2 mydb.db .dump | sqlite3 mydb-new.db

Je suis cette erreur:

SQL error near line 84802: no such column: Ð

Dans cette ligne le script c'est:

INSERT INTO vehiculo VALUES(127548,'21K0065217',Ñ,'PA007808',65217,279,1989,3,468,'1998-07-30 00:00:00.000000','14/697/98-07',2,'',1);

Ma conjecture est que le 'Ñ' sans les guillemets est le problème.

une idée? PD: Je suis sous Windows maintenant et je voudrais utiliser la ligne de commande afin qu'elle puisse être automatisée (ce processus sera effectué quotidiennement par un serveur).

Répondre

1

Simply open the v2 database with the sqlite3 binary CLI, and then save it. The database file will be transparently migrated to v3.

Cela ne fonctionne pas.

$sqlite3 db2 
SQLite version 3.6.16 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> .tables 
Error: file is encrypted or is not a database 
sqlite> .q 

Et le fichier n'est pas modifié (apparemment sqlite3 ne pouvait pas le lire). Je pense que le problème d'origine est un bug dans sqlite2.

+0

aussi ... 'Erreur: le fichier est crypté ou n'est pas une base de données' une solution? –

0

J'ai essayé de le faire sans fenêtres intervention:

*by calling sqlite2 on old.db, and send the dump directly to a file

*and then call sqlite3 on new.db and loading the dump directly from the file.

Juste dans les fenêtres de cas était de jouer avec les personnages sur la ligne de commande.

Même résultat.

1

Eh bien personne ne répond ... à la fin je finis par modifier mon script original (celui qui a créé la base de données sqlite2 en premier lieu) pour créer la base de données directement dans sqlite3. Je pense qu'un gros script de traitement de chaîne (grand parce que les bases de données mi sont 800mb et 200mb chacun) peut faire le travail, mais la génération de la base de données directement était plus facile pour moi.

2

Ouvrez simplement la base de données v2 avec l'interface CLI sqlite3, puis enregistrez-la. Le fichier de base de données sera migré de manière transparente vers v3.

$ sqlite3 v2database.db 
sqlite> .quit 
$ 

Remarque: vous devrez peut-être insérer/supprimer une ligne avant de quitter pour forcer une mise à jour.

+1

Vraiment, aussi simple que ça, je n'ai plus la base de données à portée de main, donc je ne peux pas vraiment la tester, mais dès que j'aurai des données de test, je vais essayer – levhita