Bonjour à tous,
j'ai passé pas mal d'heure sur le .net à essayer de trouver une réponse à cette question sans succès. J'ai peut-être mal cherché, parce que j'ai surtout trouvé comment vérifier la présence d'une table lors d'une importation par lot. Voici le code :
J'ai trouvé ce code sur le .net et l'ai adapté. Comme dit dans mon fil précédent, il est fonctionnel, mais ne répond pas entièrement à mes attentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php $databasehost = "localhost"; $databasename = "catalogue_trains"; $databasetable = "trainset"; $databaseusername="root"; $databasepassword = ""; $fieldseparator = ","; $lineseparator = "\n"; $csvfile = ("Liste/Liste.csv"); try { $pdo = new PDO("mysql:host=$databasehost;dbname=$databasename", $databaseusername, $databasepassword, array( PDO::MYSQL_ATTR_LOCAL_INFILE => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) ); } catch (PDOException $e) { die("database connection failed: ".$e->getMessage()); } $materiel = 'materiel'; $stmt = $pdo->prepare("SELECT * FROM trainset WHERE materiel=?"); $stmt->execute([$materiel]); $mat = $stmt->fetch(); //On traite les résultats if (!$mat) { $affectedRows = $pdo->exec(" LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable` FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)." LINES TERMINATED BY ".$pdo->quote($lineseparator)); ?> <div id="info">Enregistré un total de </div> <?php $affectedRows . "lignes à partir du fichier : " . $csvfile; ?> <script language='javascript'> temp=document.getElementById('info'); setTimeout('temp.style.display="none"',10000); </script> <?php //fclose($file); } header('location:index.php'); ?>
Je ne sais pas comment faire pour ne pas avoir de doublons après l'importation du fichier .cvs. Ma table contient plus de 45000 entrées, je me vois donc mal faire un contrôle manuel.
Je suis coincé, car tout ce que j'ai tenté ne fonctionne pas. Je précise que ma table n'est pas indexée.
Pouvez-vous indiquer une piste au grand débutant qui vous écrit ?
Merci d'avance.
Cordialement
Pascal
Partager