CVS Importeren in mySQL en UPDATEN

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom Fischer

Tom Fischer

01/10/2010 14:55:21
Quote Anchor link
Beste PHPHelpers,

Ik heb een script die het volgende doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if(is_file($srvroot."files/".$dataset_file)){
            
                mysql_query("
                TRUNCATE TABLE plug_importeren
                "
) or die(mysql_error());
                
                mysql_query("
                LOAD DATA LOCAL INFILE '"
.$srvroot."files/".$dataset_file."'
                INTO TABLE plug_importeren
                FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' ;
                "
) or die(mysql_error());
            
            };        
        };

?>


Deze upload een CSV bestand en vervangt de huidige tabel met de CSV waardes.
Maar....

Ik zou graag willen dat ik niet TRUNCATE TABLE maar een UPDATE TABLE kan doen. Dus dat alleen de gewijzigde elementen aangepast worden. En het liefste zelfs alleen de nieuwe waardes toevoegen dus:

als de huidige tabel 100 waardes heeft en het nieuwe CSV 105. Dat er alleen5 bij komen in de DB tabel.

Maar hoe kan ik dit doen, en kan dit überhaupt?
Alvast bedankt!

Met vriendelijke groet,
Tom
Gewijzigd op 01/10/2010 14:55:39 door Tom Fischer
 
PHP hulp

PHP hulp

24/11/2024 06:18:25
 
Tom Fischer

Tom Fischer

04/10/2010 09:22:47
Quote Anchor link
Niemand een idee?
 
Jeroen Spaans

Jeroen Spaans

04/10/2010 10:52:25
Quote Anchor link
Maak van de TRUNCATE -> UPDATE??
En ik denk dat je een query moet schrijven om te vergelijken...
 
Tom Fischer

Tom Fischer

04/10/2010 11:28:42
Quote Anchor link
Ja ik heb wel een ander script bekeken, dat een beetje op zo'n manier werkt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php


    //uploadlocatie
    $uploaddir = './import/';
    
    //artikel file:
    $artikelgroepfile = $uploaddir . basename($_FILES['grp_file']['name']);
    $grp_file = $_FILES['grp_file']['name'];
    
    if (move_uploaded_file($_FILES['grp_file']['tmp_name'], $artikelgroepfile)){
        
        $importGroups = true;
        $importArticles = false;
        $groupsFile = "import/groepen.csv" ;
        $articlesFile = "import/".$grp_file ;
    
        $firstlineContainsHeader = true;
        
        /**
         * Convert name like 'Polo T-Shirt' to 'polo_tshirt'
         * @param $name The name to convert
         * @return The converted name
         */

        
        function nameToID($name) {
            $name = ereg_replace("[^A-Za-z0-9 ]", "", $name);
            $name = str_replace(' ', '_', $name);
            $name = strtolower($name);
            return $name;
        }

        
        /* Import groups */
        if ($importGroups) {
            $row = 1;
            $handle = fopen($groupsFile, "r");
            $inserted = 0;
            $updated = 0;
            while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
                $count = count($data);
                if (($count == 2) && !($row == 1 && $firstlineContainsHeader)) {
                    $ID = nameToID($data[0]);
                    $name = str_replace("'", "\'", $data[1]);
                    $sql = "INSERT INTO `tom_cat` (`cat_id`, `cat_naam`, `cat_realname`, `cat_upper`, `cat_image`, `cat_actief`, `cat_nivo`)";
                    $sql .= "VALUES ('$ID', '$name', '$ID', '$ID', '0', '1', '1')";
                    $result = mysql_query($sql);
                    // if error with inserting, try to update
                    if (!$result) {
                        $sql = "UPDATE `tom_cat` SET";
                        $sql .= " `cat_naam` = '$name'";
                        $sql .= ", `cat_realname` = '$ID'";
                        $sql .= ", `cat_upper` = '$ID'";
                        $sql .= " WHERE `cat_id` = '$ID' ";
                        $result = mysql_query($sql);
                        // update failed, error!
                        if (!$result) {
                            echo "Error update tom_cat: " . mysql_error() . "<br>\n";
                        }
else {
                            $updated++;
                        }
                    }
else {
                        $inserted++;
                    }
               }

               $row++;
            }

            fclose($handle);
            echo '<h2>Groepen</h2>';
            echo $inserted . ' record(s) toegevoed<br>';
            echo $updated . ' record(s) geupdate<br><br>';
        }
        
    
    };
};

?>


Maar ik krijg het niet voor elkaar om het te combineren;
Gewijzigd op 04/10/2010 11:29:39 door Tom Fischer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.