Création de table à partir de fichier CSV

Imprimer
PDF
J'ai eu besoin de créer des tables SQLite à partir de fichiers CSV.
Ces fichiers CSV comportait les noms de colonnes en première ligne.

J'ai donc créé un script PHP en ligne de commande que je vous mets à disposition. Vous pouvez facilement modifier ce script pour l'adapter à vos besoins.
Pour l'utiliser :
php -q tableFromCsv.php sqliteDatabase tableName CSV_Filename [separator] [delimitor]
ou
./tableFromCsv.php sqliteDatabase tableName CSV_Filename [separator] [delimitor]

sqliteDatabase : nom de fichier de la base de données SQLite2 (avec le chemin absolu ou relatif)
tableName : nom de la nouvelle table
CSV_Filename : nom du fichier CSV à importer (avec le chemin absolu ou relatif)
separator : caractère separateur de données (Optionnel par defaut ';')
delimitor : délimiteur de chaine (Optionnel par défaut vide)

Voici le script :
#!/usr/local/bin/php
/*
* Créé une table à partir d'un fichier CSV dont la première ligne contient les titres de colonne
*
* Utilisation :
* php -q tableFromCsv.php sqliteDatabase tableName CSV_Filename [separator] [delimitor]
* ./tableFromCsv.php sqliteDatabase tableName CSV_Filename [separator] [delimitor]
*/

if(count($_SERVER['argv'])>=4) {
$databaseFile = $_SERVER['argv'][1];
$tableName = $_SERVER['argv'][2];
$csvFilename = $_SERVER['argv'][3];

if(isset($_SERVER['argv'][4])) $separator = $_SERVER['argv'][4]; else $separator = ';';
if(isset($_SERVER['argv'][5])) $delimiteur = $_SERVER['argv'][5]; else $delimiteur = null;

if($db = sqlite_open($databaseFile, 0666, $sqliteError)) {
$row = 0;
$handle = fopen($csvFilename, "r");
while (($data = fgetcsv($handle, 0, $separator)) !== FALSE) {
if(!$row) {
if(!sqlite_query($db, "CREATE TABLE ".$tableName." (".implode(', ', $data).");")) {
echo "La création de la table à échoué.";
exit;
}
} else {
$tempTab = array();
foreach($data as $val) {
$val = utf8_decode($val);
$val=str_replace("''", "'", $val);
$tempTab[] = "'" . sqlite_escape_string($val) . "'";
}
$q = "INSERT INTO ".$tableName." VALUES (".implode(", ", $tempTab).");";
sqlite_query($db, $q);
}
$row++;
}
fclose($handle);
} else {
echo "la connexion à la base SQLite : ".$databaseFile." à echoué";
}
} else {
echo "
Usage :
tableFromCsv.php database tableName csvFilename [separator] [delimitor]";
}

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Création de table à partir de fichier CSV - SQLiteManager
Facebook MySpace Twitter Digg Delicious Stumbleupon Google Bookmarks 

Auteur

SQLiteManager est maintenant géré par la société WebInfoPro afin de refaire vivre ce projet tout en restant sous licence GPL

Contact

Vous pouvez nous contacter par email sur sqlitemanager@gmail.com

Qui est en ligne?

Nous avons 70 invités en ligne