Question

Essayer l’approche facile:

  

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

J'ai cette erreur:

  

Erreur SQL près de la ligne 84802: aucune colonne de ce type: & # 208;

Dans cette ligne, le script est le suivant:

  

INSÉRER DANS LES VALEURS DU VÉHICULE (127548, '21K0065217', & # 209; , 'PA007808', 65217,279,1989,3,468, '1998-07-30 00: 00: 00.000000' '14 / 697 / 98-07 ', 2,' ', 1);

Je suppose que le '& # 209;' sans guillemets est le problème .

une idée?

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

Était-ce utile?

La solution

  

Ouvrez simplement la base de données v2 avec la CLI binaire sqlite3, puis enregistrez-la. Le fichier de base de données sera migré de manière transparente vers la 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’a pas changé (apparemment, sqlite3 n’a pas pu le lire). Je pense que le problème initial est un bug dans sqlite2.

Autres conseils

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

$ sqlite3 v2database.db
sqlite> .quit
$

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

Eh bien, personne ne répond ... à la fin, je finis par modifier mon script d'origine (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 script de traitement de chaîne volumineux (parce que mes bases de données moyennes sont de 800 et 200 Mo chacune) peut faire l'affaire, mais générer la base de données directement a été plus facile pour moi.

J'ai essayé de le faire sans intervention de Windows:

  

* en appelant sqlite2 sur old.db et envoyez le dump directement dans un fichier

     

* puis appelez sqlite3 sur new.db et chargez le dump directement à partir du fichier.

Juste au cas où Windows manipulerait les caractères de la ligne de commande.

Même résultat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top