Ik wil een CSV bestand gebruiken als databestand voor het vullen van een MySQL database. De hostingprovider staat geen LOAD DATA INFILE toe met als gevolg dat ik het op de onderstaande manier doe.
Ik haal zowel de veldnamen als de data uit een csv bestand middels het onderstaande (dit voorbeeld is voor de veldnamen):
Vervolgens gebruik ik de informatie uit het CSV bestand om een query aan te maken.
Nu komt het vage!
Bij het uitvoeren van de query geeft mysql admin de volgende fout:
Let vooral op de SPATIE die achter de waarde wordt neergezet!
Zowel in de dump.csv als in de query staat er geen spatie achter de veldnaam, maar uiteindelijk 'ziet' de mysql admin wel een spatie?!
Ik ben echt radeloos... ik kan er niet achter komen waarom er nou een spatie wordt neergezet. Omdat de veldnaam dus niet overeenkomt met die in de database wil de gehele query niet werken. Helaas heb ik te maken met een kleine 200 kolommen met data dus dat wil ik graag niet handmatig gaan lopen nakijken.
Heeft iemand dit vaker meegemaakt? Zo ja, wat was je gekozen oplossing?
Ik haal zowel de veldnamen als de data uit een csv bestand middels het onderstaande (dit voorbeeld is voor de veldnamen):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $handle = fopen ("dump.csv","r"); while ($data = fgetcsv ($handle, 15000, ";")) { $num = count($data); $col=$col." ("; for ($c=0; $c<$num-1; $c++) { //tot de laaste -1 met comma erachter $col = $col."`".trim($data[$c])."`,"; } if ($c=$num-1){ //de laatste zonder comma $col=$col."`".trim($data[$c])."`)"; } } fclose ($handle); //echo $col --> (`veldnaam1`,`veldnaam2`,etc); |
Vervolgens gebruik ik de informatie uit het CSV bestand om een query aan te maken.
PHP:
1
2
| $sql="INSERT INTO `tabel` ".$col." VALUES (`waarde1`,`waarde2`,`waarde3`,`waarde4`);" //echo $sql --> INSERT INTO `tabel` (`veldnaam1`,`veldnaam2`,`veldnaam3`,`veldnaam4`) VALUES (`waarde1`,`waarde2`,`waarde3`,`waarde4`); |
Nu komt het vage!
Bij het uitvoeren van de query geeft mysql admin de volgende fout:
code:
1
2
3
4
| MySQL said: Unknown column 'veldnaam2 ' in 'field list' ^ |
Let vooral op de SPATIE die achter de waarde wordt neergezet!
Zowel in de dump.csv als in de query staat er geen spatie achter de veldnaam, maar uiteindelijk 'ziet' de mysql admin wel een spatie?!

Ik ben echt radeloos... ik kan er niet achter komen waarom er nou een spatie wordt neergezet. Omdat de veldnaam dus niet overeenkomt met die in de database wil de gehele query niet werken. Helaas heb ik te maken met een kleine 200 kolommen met data dus dat wil ik graag niet handmatig gaan lopen nakijken.
Heeft iemand dit vaker meegemaakt? Zo ja, wat was je gekozen oplossing?
- Ruud