Le module DBD::CSV est un driver pour le module DBI (Database independent interface for Perl).
Ce module utilise le "moteur" SQL et crée un fichier de type .CSV (Comma separated values).
Il est surtout utilisé pour exporter des données sous MS Access ou MS Excel.
Ce module requière les modules suivants :
- DBI
- DBD::CSV
- SQL::Statement
- Text::CSV_XS
- DBD::File
La connexion se fait grâce à "DBI->connect". Plusieurs attributs peuvent être nécessaires :
f_dir : définit le répertoire du csv
csv_eol : définit le caractère de fin de ligne du fichier
csv_sep_char : définit le caractère de séparation des différents champs
csv_escape_char : permet de doubler le caractère définit comme "csv_quote_char" s'il est trouvé dans la chaîne de caractères
csv_quote_char : définit le caractère de délimitation d'un champ comportant une chaîne de caractères avec des espaces
Au niveau SQL, on peut effectuer créations de table, sélections, insertions ou mises à jour : CREATE TABLE, SELECT, INSERT ou UPDATE ...
Il y a quelques petits bugs : les NULL et les entiers sont mal interprétés.
Exemple :
use DBI;
$dbh = DBI->connect(qq{DBI:CSV:f_dir=/csv;csv_eol=\;
;csv_sep_char=\; csv_escape_char="; csv_quote_char=";}) || die &errSQL ("Impossible de se connecter au serveur MySQL", $DBI::errstr);
$sqlCreate = "CREATE TABLE CopieCSV (NOM char(100), PRENOM char(100), EMAIL char(255), SOCIETE char(255))";
$sth = $dbh->prepare($sqlCreate) || die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
$sth->finish();
$sqlInsert = "INSERT INTO CopieCSV (NOM, PRENOM, EMAIL, SOCIETE) VALUES ('Dupond', 'Jean', 'jdupond@dupond.fr', 'Dupond "R" SA' )";
$sth = $dbh->prepare($sqlInsert) || die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
$sqlInsert = "INSERT INTO CopieCSV (NOM, PRENOM, EMAIL, SOCIETE) VALUES ('Dupond', 'Carine', 'cdupond@dupond.fr', 'Dupond SA' )";
$sth = $dbh->prepare($sqlInsert) || die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die "Cannot execute: " . $sth->errstr();
$sth->finish();
$dbh->disconnect();
rename "/csv/CopieCSV" ,"/csv/CopieCSV.csv";
Dans cet exemple, on obtiendra dans le fichier CopieCSV.csv :
NOM;PRENOM;EMAIL;SOCIETE;
Dupond;Jean;jdupond@dupond.fr;"Dupond ""R"" SA";
Dupond;Carine;cdupond@dupond.fr;"Dupond SA";
Pour en savoir plus sur le module DBD::CSV : http://www.mathematik.uni-ulm.de/help/perl5/doc/DBD/CSV.html