txt bestand importeren in database
Ik probeer met de volgende phpcode een (kommagescheiden) tekstbestand te importeren
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$con=mysqli_connect($dbhost,$dbgebruiker,$dbww,$dbdb);
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$bestand=$_FILES['localfile']['tmp_name'];
$query="LOAD DATA LOCAL INFILE '$bestand' INTO TABLE `Boekingen` FIELDS TERMINATED BY ',' ENCLOSED BY '”' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
echo "Moment aub, bestand ".$bestand." word geimporteerd.<br><br>";
if (!mysqli_query($con,$query))
{
die('Error' . mysqli_error($con));
}
?>
$con=mysqli_connect($dbhost,$dbgebruiker,$dbww,$dbdb);
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$bestand=$_FILES['localfile']['tmp_name'];
$query="LOAD DATA LOCAL INFILE '$bestand' INTO TABLE `Boekingen` FIELDS TERMINATED BY ',' ENCLOSED BY '”' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
echo "Moment aub, bestand ".$bestand." word geimporteerd.<br><br>";
if (!mysqli_query($con,$query))
{
die('Error' . mysqli_error($con));
}
?>
Nu krijg ik de error
ErrorYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' IGNORE 1 LINES' at line 2
Maar doe ik dit rechtstreeks op de sql server dan geeft het geen probleem.
Groetjes,
Marco
Of andersom
Het zou makkelijk zijn als je een voorbeeld geeft van het tekstbestand en de database tabel. Dan kunnen we zelf ook het een en ander proberen. Tot nu toe zie ik geen fouten die het probleem veroorzaken. Wat pepijn beweert lijkt mij sterk. Vandaar dat ik het even wil proberen.
De versie van de SQL server is MySQL 5.5.28.
Toevoeging op 08/05/2013 17:41:36:
Milo S,
Een voorbeeld van het tekst bestand dat ik wil importeren:
"Datum","Naam / Omschrijving","Rekening","Tegenrekening","Code","Af Bij","Bedrag (EUR)","MutatieSoort","Mededelingen"
"20130424","Mw Y Voorbeeld","1234567","1234567","GT","Bij","40,00","Internetbankieren","Voorbeeld mededeling"
"20130424","E Voorbeeld","1234567","1234567","GT","Bij","27,50","Internetbankieren","Voorbeeld mededeling"
"20130424","T.L. Voorbeeld","1234567","12123456789","OV","Bij","5,00","Overschrijving","Voorbeeld mededeling"
Alvast bedankt voor het meedenken.
Groetjes,
Marco
Ik heb het een en ander geprobeerd en bij mij gaf het volgende het gewenste resultaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql = "LOAD DATA LOCAL INFILE '".$bestand."' INTO TABLE boekingen FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
# Query uitvoeren
if( !$res = mysqli_query( $conn, $sql ) )
{
echo 'An error occurred while executing the query.';
echo mysqli_error( $conn );
}
else
{
echo 'Gelukt!';
}
?>
$sql = "LOAD DATA LOCAL INFILE '".$bestand."' INTO TABLE boekingen FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
# Query uitvoeren
if( !$res = mysqli_query( $conn, $sql ) )
{
echo 'An error occurred while executing the query.';
echo mysqli_error( $conn );
}
else
{
echo 'Gelukt!';
}
?>
Thanks, pakte niet direct, maar naar even verder kijken werkte het.
$conn was eerder in het script $con.
En boekingen moest zijn Boekingen.
Maar dit is perfect.
Ook duidelijk opgezet waardoor het ook voor minder ervaren programmeur begrijpelijk is,
Groetjes,
Marcp