windows - Sådan håndteres UTF-8 tegn i sqlite2 til sqlite3 migration

Indlæg af Hanne Mølgaard Plasc

Problem



Forsøger den nemme tilgang:



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



Jeg fik denne fejl:



  SQL fejl nær linje 84802: ingen sådan kolonne: Ð



I den linje er scriptet dette:



  Indsættes i vehikelværdier (127548, '21K0065217', Ñ , 'PA007808', 65217.279,1989,3,468, '1998-07-30 00: 00,00 000000', '14/697/98-07' , 2 '', 1);



Mit gæt er, at 'Ñ' uden citater er problemet .


nogen ide?


PD: Jeg er under Windows lige nu, og jeg vil gerne bruge kommandolinjen, så den kan automatiseres (denne proces udføres dagligt af en server).

Bedste reference



  Du skal blot åbne v2-databasen med den binære CLI sqlite3, og gem den derefter. Databasefilen overføres migrigt til v3.



Det virker ikke.


$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


Og filen ændres ikke (tilsyneladende sqlite3 kunne ikke læse den). Jeg tror, ​​at det oprindelige problem er en fejl i sqlite2.

Andre referencer 1


Du skal blot åbne v2-databasen med den binære CLI sqlite3, og gem den derefter. Databasefilen overføres migrigt til v3.


$ sqlite3 v2database.db
sqlite> .quit
$


Bemærk: Du skal muligvis indsætte/slette en række, før du stopper for at tvinge en opdatering.

Andre referencer 2


Godt ingen svarer ... i slutningen ender jeg med at ændre mit originale script (den der oprettede sqlite2 databasen i første omgang) for at oprette databasen direkte i sqlite3.


Jeg tror, ​​at en stor strengbehandling script (stor fordi mi databaser er 800mb og 200mb hver) kan gøre jobbet, men at generere databasen direkte var lettere for mig.

Andre referencer 3


Jeg forsøgte at gøre det uden vinduesintervention:



  * ved at kalde sqlite2 på old.db, og send dump direkte til en fil

  
  * og derefter kalde sqlite3 på new.db og indlæse dumpningen direkte fra filen.



Bare i tilfælde af, at vinduerne rystede med tegnene på kommandolinjen.


Samme resultat.