Avatar billede chris72 Nybegynder
06. maj 2014 - 17:12 Der er 10 kommentarer og
3 løsninger

Overførsel af data fra Sqlite3 til Mysql

Jeg har en del data, ca 3000 record liggende i en Sqlite-database og ønsker dem overført til en MySql-database, men der kommer en fejlmeddelse fra MySql efter at have indlagt 61 record jfr. nedenståen PHP-skrift.

<pre>
<?php
/*
6 Maj 2014
Programmet over data fra Sqlite databasen "dagbog", tabellen t1 til
MySql databasen "dagbog" tabellen db.

Programmet stopper efter at have over 61 rec. Hmm
*/
ini_set( "display_errors", true );
date_default_timezone_set( "Europe/Copenhagen" );

/* Åben MySql */
mysql_connect(".", "root", "") or die(mysql_error());
mysql_select_db("dagbog") or die(mysql_error());
$table_1 = "db";

/* Åben Sqlite */
$db = new SQLite3('C:\Program Files (x86)\sqlite\data\dagbog.db');
$table_2 = "t1";

$nr = 1;
$res = $db->query("SELECT * FROM $table_2 order by date");
while ($row = $res->fetchArray()){    //Lav en while der kører alle rækker igennem
    $date    = $row["date"];
    $title  = $row["title"];
    $text    = $row["text"];
    $search  = $row["search"];
    $keyword = $row["keyword"];

$query = "INSERT INTO $table_1 (date, title, text, search, keyword)
        VALUES ('$date', '$title', '$text' ,'$search', '$keyword')";
    mysql_query($query) or die('Error ,query failed');
}
?>
</pre>

Nogen der har en ide om hvorfor indførslen i MySql stopper ?
Avatar billede arne_v Ekspert
06. maj 2014 - 17:22 #1
Kan du besnakkes til at afsloere hvad fejlmeddelsen er?
Avatar billede chris72 Nybegynder
06. maj 2014 - 17:25 #2
Hej Arne

Fejmeddelsen er "Error ,query failed" som fremgår af kode.
Avatar billede arne_v Ekspert
06. maj 2014 - 17:46 #3
"fremgaar af kode" hmmmm ....

naa men saa skal du nok starte med at erstatte:

die('Error ,query failed')

med:

die(mysql_error())
Avatar billede chris72 Nybegynder
06. maj 2014 - 18:31 #4
Det giver selvfølgelig en anden fejlmeddelse som er:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'du til at tage et halvt års ferie ? Kan jeg få telefonnummeret på' at line 2

Der som oftest er det here sluder, da MySql henviser til teksten i et Text-felt, som jo ikke har noget med MySql-syntaks at gøre.
Avatar billede arne_v Ekspert
06. maj 2014 - 19:10 #5
Jeg vil tro at raekke 62 har et felt hvor der er en ' i indholdet og det fucker din SQL saetning op.
Avatar billede chris72 Nybegynder
06. maj 2014 - 19:28 #6
Du har ret og der er åbenbart også problemer med tegnene / og \. Det er åbenbart for længe siden jeg har rodet med programmering, siden jeg har glemt disse problem tegn, men det begynder at komme frem i hukommelsen, så tak dit hurtige respons.
Avatar billede arne_v Ekspert
06. maj 2014 - 19:42 #7
saa enten mysql_real_escape_string eller opgrader til dette aarti og brug mysqli og prepared statement
Avatar billede chris72 Nybegynder
06. maj 2014 - 19:57 #8
Det er nok et meget godt forslag at få omkodet mine programmer til at bruge MySqli el. PDO.
Avatar billede arne_v Ekspert
07. maj 2014 - 01:37 #9
og et svar fra mig
07. maj 2014 - 04:32 #10
Hvad med at bruge noget lig https://code.google.com/p/phpliteadmin/ til at eksportere dataen og bagefter importere det i MySQL med phpMyAdmin?
Avatar billede chris72 Nybegynder
07. maj 2014 - 12:12 #11
Jeg kender godt dem begge, men bruger front-programmerne "Navicat SqLite" og "Navicat MySql", som begge kan det samme som dem du nævner.

Jeg har prøvet at exportere og importere med Navicat's programmerne, både som sql.- og alm. tekstfil, med det fejler ved importen, med en uoverskulig masse fejl, jeg prøvede så direkte import af sql-filen med MySql, hvilket også fejlede.

Jeg tilføjede de nedenstående 2 linier til min kode, netop før "Insert Into" og fjernede ca 200 stk chr(254) (firkantet kasse-symbol) manuelt, som lå alle mulige besynderlige steder i "title" og "text"  felterne, og som jeg ikke aner hvordan er havnet der. Hvilket også bl.a. er årsagen til at jeg ønsker at gå tilbage til MySql, da Sqlite ikke er helt så stabil som MySql.


$title = mysql_real_escape_string($title);
$text = mysql_real_escape_string($text);
Avatar billede arne_v Ekspert
08. maj 2014 - 01:43 #12
Export-import af SQL er problematisk hvis der er forskel paa SQL dialekterne.
Avatar billede chris72 Nybegynder
08. maj 2014 - 08:42 #13
Det må man sige.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester