Bonjour,
J'ai déjà posté quelques messages à ce sujet, mais comme à chaque fois, je change de stratégie...
je suis actuellement en stage en entreprise ou mon tuteur m'a demandé de faire un module (via une page web) qui récupérerait un fichier csv , mettrait ses données dans un tableau pour ensuite le compareravec la table de la base de données oracle et faire les insert, update et delete en conséquence...
J'ouvre, je lis mon fichier csv et je met les données dans un tableau:
j'utilise merge pour faire des insert ou update:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $handle = fopen($fichier, "r"); // ouvre le fichier csv en lecture seule while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { $num2 = count($data); //nous donne le nombre de champs for ($c=0; $c < $num2; $c++) { $donneesCSV[]= array( 'NUMTICKET_CSV'=>''.$data[$c++].'', 'DATEHEURETIC_CSV'=>''.$data[$c++].'', 'MONTANT_CSV'=>''.$data[$c++].'', 'TYPEACHAT_CSV'=>''.$data[$c++].'' ); }}
sauf que ce que je veux faire c'est utiliser merge pour chaque enregistrement de mon tableau, au lieu de rentrer les données à la main...et là je coince!!! Quelqu'un peut-il m'aider?!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $sqlMerge= "MERGE INTO TICKET USING dual ON (NUMTICKET = '29') WHEN MATCHED THEN UPDATE SET MONTANT = '2780', TYPEACHAT='Maurice', DATEHEURETIC=TO_DATE('2012-08-19 15:38:48', 'SYYYY-MM-DD HH24:MI:SS') WHEN NOT MATCHED THEN INSERT (NUMTICKET, MONTANT, TYPEACHAT, DATEHEURETIC) VALUES ('29', '2780', 'Maurice', TO_DATE('2012-08-19 15:38:48', 'SYYYY-MM-DD HH24:MI:SS'))"; $resultatMerge = $db->query($sqlMerge);
Partager