Bonjour,
je souhaiter créer une table dans ma base avec les données de mon fichier CSV (186 872 lignes). Je sais que la première colonne sera mon numéro de ligne (int(11), la deuxième sera le date et heure (DATETIME) que les colonnes suivantes sont DECIMAL(7,5)
en fait je récupère la première du CSV pour créer la table et après je fait un insert (ou LOAD DATA LOCAL INFILE).
pour le moment je bloque sur la création de la table. j'ai une erreur TIME OUT.
dans ce fichier j'ai 7 colonnes (no;date;CH1;CH3;CH5;CH7;CH9).
je dois mal faire quelque chose. j'essaye avec les vardump de voir d’où vient le problème.
le fichier je l'importe avec
et le traitement ce fait avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <form method="post" enctype="multipart/form-data" action="test_importCSV.php"> <fieldset> <legend>Sélectionnez le fichier a importé</legend> <label class="col-md-4 control-label">Choisir un fichier CSV</label> <input type="file" name="file" accept=".csv"> <br /> <input type="submit" name="envoyer" value="envoyer" /> </fieldset> </form>
le code doit surement lire l'ensemble du fichier ou alors il essaye de creer 7 fois la table
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 <?php require('_connexion.php'); if (isset($_POST["envoyer"])) { $table = pathinfo ($_FILES["file"]["name"], PATHINFO_FILENAME); $file = $_FILES["file"]["tmp_name"]; $delimiteur=";"; $taille = 1000; var_dump($table); var_dump($file); // get structure from csv and insert db ini_set('auto_detect_line_endings',TRUE); if (($handle = fopen($file,'r')) !==FALSE ) { // ... obtenir le contenu de la ligne $data = fgetcsv($handle,$taille,$delimiteur); $num = count($data); var_dump($data); var_dump($num); } for($f=0;$f<$num; $f++) { if ($f=0){ $fields[] = $f.' int(11)'; } else if ($f=1){ $fields[] = $f.' DATETIME'; } else { $fields[] = $f.' DECIMAL(7,5)'; } //var_dump($fields); $sql='CREATE TABLE $table ('. implode(',', $fields) .')'; $req=$pdo->prepare($sql); } } ?>
cela fait maintenant des heures que je cherche comment créer ce code correctement. il doit surement avoir plus simple ?
je vous remercie d'avance pour votre aide
Partager