inporteren van data uit exel naar mysql
is het mogenlijk (en hoe) om data te inporteren uit een exelsheet naar meerdere verschillende tabellen in een mysql database door middel van php?
Ja dat is mogelijk, bv met PHPExcel of eerst csv te exporteren vanuit excel en daarna inlezen met PHP of rechtstreeks in MYSQL.
wat voor php codes zou ik dan moeten gebruiken om een csv uit telezen en in meerdere bestaande tabellen te plaatsen ik heb al gevonden hoe het werkt voor 1tabel maar niet voor meerdere
http://php.net/manual/en/function.fgetcsv.php
Hoe ziet de data er uit?
Wat moet er in welke tabel komen?
Waarom in meer dan 1 tabel?
Gewijzigd op 08/02/2012 15:02:23 door Kris Peeters
het is 1 exell sheat met meerdere collommen de meeste collommen moetten in 1 tabel in de database komen alleen 2 van de collommen van het exel sheat moetten in een andere tabel komen.
Je zult wel ergens een lus hebben, iets als (zie mijn link, Example #1)
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
Dan is $data[0] de eerste kolom, $data[1] de tweede ...
Dan kan je ies doen als
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
...
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
mysql_query("INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ('" . $data[0] . "', '" . $data[1] . "') ");
mysql_query("INSERT INTO mijntabel2 (foo) VALUES ('" . $data[5] . "') ");
}
...
?>
...
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
mysql_query("INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ('" . $data[0] . "', '" . $data[1] . "') ");
mysql_query("INSERT INTO mijntabel2 (foo) VALUES ('" . $data[5] . "') ");
}
...
?>
Wat waarschijnlijk wel nog beter is, is om de sql-string op te bouwen en in 1 keer te laten uitvoeren, in plaats van telkens mysql aan te spreken.
Iets in die aard:
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
...
$sql_tabel1 = "INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ";
$sql_tabel2 = "INSERT INTO mijntabel2 (foo) VALUES ";
$i=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($i++ > 0) { // dit voegt een komma toe tussen elk record, (niet na de laatste record)
$sql_tabel1 .= ", ";
$sql_tabel2 .= ", ";
}
$sql_tabel1 .= "('" . $data[0] . "', '" . $data[1] . "') ";
$sql_tabel2 .= "('" . $data[5] . "') ";
}
if ($i > 0) {
mysql_query($sql_tabel1);
mysql_query($sql_tabel2);
}
...
?>
...
$sql_tabel1 = "INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ";
$sql_tabel2 = "INSERT INTO mijntabel2 (foo) VALUES ";
$i=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($i++ > 0) { // dit voegt een komma toe tussen elk record, (niet na de laatste record)
$sql_tabel1 .= ", ";
$sql_tabel2 .= ", ";
}
$sql_tabel1 .= "('" . $data[0] . "', '" . $data[1] . "') ";
$sql_tabel2 .= "('" . $data[5] . "') ";
}
if ($i > 0) {
mysql_query($sql_tabel1);
mysql_query($sql_tabel2);
}
...
?>
Gewijzigd op 08/02/2012 15:47:52 door Kris Peeters
Artikel;Artikelomschrijving;Art. lev. 1;Art. lev. 2;Vrij;Tech;Geres; Inkoopprijs ; Verkoopprijs
48201035;"10"" 8port 10/100 Mbps switch incl paneel";ZFS3008S;;0;0;0; 26,43 ; 54,00
45054001;"10"" power strip 3x on/off switch";14.0005;;0;0;0; 16,29 ; 30,00
44951012;"10""Patchpaneel UTP 8 port CAT.5e LSA";010.12.705001;;0;0;0; 19,79 ; 29,00
48953010;10/100 Multi-Mode SC;DN-82020-1;;2;2;0; 16,33 ; 39,00
het is de bedoelling dat artikel, artikelomschrijving, vrij in een tabel komen van mijn database en dat inkoopprijs / verkoopprijs in een andere tabel komen gekoppelt aan het artikelnummer
maar hoe moet ik dat maken ik heb al een heleboel uitgeprobeert maar nog niks doet het
Gewijzigd op 10/02/2012 10:49:24 door peter spek
while (($data = fgetcsv($handle, 1000, ","))
moet zijn:
while (($data = fgetcsv($handle, 1000, ";"))
Gewijzigd op 10/02/2012 16:06:54 door peter spek
Het zal aan de delimiter liggen. Ik zie dat ze bij jou een puntkomma is.
Dat wordt dus
fgetcsv($handle, 1000, ";")
in plaats van
fgetcsv($handle, 1000, ",")
Gewijzigd op 10/02/2012 16:22:23 door Kris Peeters