2009-04-23 4 views
3

J'avais besoin de l'information mise à jour de mon client pour remplir une table de clients.Comment puis-je importer un fichier (csv/excel) avec des données partielles à déposer dans la base de données via phpmyadmin?

J'ai exporté la table que je voulais dans un fichier Excel et je leur ai demandé de remplir les nouvelles informations (c'était seulement une colonne dont j'avais besoin d'être mise à jour) et ils m'ont renvoyé le fichier.

Maintenant, je veux importer cette information dans ma colonne de table.
Essai et erreur plusieurs fois, converti en csv le fichier Excel et importé via phpmyadmin.

Mais il n'a pas mis à jour une colonne.

Qu'est-ce que je fais mal?

Répondre

2

Si vous avez le fichier dans un fichier .csv et que vous connaissez du PHP, vous pouvez simplement écrire un script qui boucle le fichier et insère/met à jour les enregistrements dans la base de données.

Par exemple, permet de dire que chaque ligne de votre csv est structuré comme celui-ci:

id,name,address,email,date 

Par exemple:

1,bob smith,344 abc street,[email protected],2009-04-01 

Vous boucle pourrait au travers de cette façon:

<?php 
$data=file_get_contents('your-file.csv'); 
//Split the file and get an array representing the lines/rows in the .csv 
$rows=explode("\n",$data); 

foreach ($rows as $row) 
{ 

    //Remove any excess whitespace from start and end of the row: 
    $row=trim($row); 
    $id=$row[0]; 
    $name=$row[1]; 
    $address=$row[2]; 
    $email=$row[3]; 
    $date=$row[4]; 
    mysql_query("UPDATE TABLE SET name='$name',....); 
} 
?> 
+0

Y aurait-il aussi une clause where? – pal4life

1

PHP a une fonction appelée fgetcsv() pour analyser les fichiers CSV.

Vous pouvez utiliser cela pour faire une boucle dans votre fichier CSV et créer des chaînes de mise à jour MySQL. Que vous pouvez exécuter via mysql_query() ou simplement copier et coller dans la fenêtre de requête dans PHPMyAdmin.

4

Si vous avez juste besoin de générer des instructions UPDATE à partir de données CSV, vous pouvez jeter un oeil à mon outil CSV FOSS, CSVFix, qui peut le faire et beaucoup plus sans avoir à écrire de code, PHP ou autre .

+0

Bonjour Neil, merci! J'ai pris un coup d'oeil mais il est possible de faire une mise à jour pour une colonne avec 1700 lignes? Il me semble que je dois faire des mises à jour rangée par rangée .. – dutraveller

+0

Il génère une mise à jour SQL pour chaque ligne dans le (s) fichier (s) de données CSV - c'est comme ça que fonctionne SQl, je crains :-) –

+0

@dutraveller, phpMyAdmin ferait également les requêtes ligne par ligne, mais cela ne fait aucune différence. SQL est conçu pour gérer des centaines de requêtes :) –

Questions connexes