Importation de donnée *.cvs

Résolu
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -  
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je rencontre des probleme lors de l'importation d'un fichier *.cvs dans la base de données. Comment remedié a ce probleme ?

config:
NAS synology ds414j
PhpMySql
je suis admin sur le nas



LOAD DATA LOCAL INFILE '/volume1/homes/.../tuto.csv'
INTO TABLE Reporting.personnes
FIELDS TERMINATED BY ';'
ENCLOSED BY ''
LINES TERMINATED BY '\r\n';


code erreur:

Requête SQL :


LOAD DATA LOCAL INFILE '/volume1/homes/.../tuto.csv'
INTO TABLE Reporting.personnes
FIELDS TERMINATED BY ';'
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'
MySQL a répondu: Documentation

#2000 - open_basedir restriction in effect. Unable to open file


#EDIT
Pour l'acces a ma base de donné jutilise root sans mot de passe, es que je devrais mettre un mdp ?

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, c'est la localisation du fichier (/volume1/homes/.../tuto.csv) qui pose problème.
peux-tu mettre le fichier à importer au même endroit que tes scripts php?
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
Alors, sur phpmyadmin j'ai mis un mdp a root, je me suis cree un compte
avec ses acces là (jai suivi un tuto)
localhost
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, CREATE TEMPORARY TABLES

erreur toujours presente
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
bon ca fait 3h que je bidouille, je trouve pas ...
J'ai essayer plein de repertoire toujour la meme errerur
/home = erreur
/home/www = erreur
/homes/Mon_user = erreur
/homes/Mon_user/www = erreur
/web = erreur
/web/Mon_site = erreur
/web/Mon_site/php erreur

le fichier user_setting.ini
open_basedir = /tmp:/var/services/tmp:/var/services/web:/var/services/homes

Je comprends pas ...

Par contre si je limporte depuis linterface phpmyadmin ca marche, mais etant doner que je vais devoir importer une base qui fait des million de ligne je dois passer par la console
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention  
 
je te suggère d'essayer dans un des répertoires suivants:
/tmp
/var/services/tmp
/var/services/web
/var/services/homes
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
ok je vais voir ça, merci
0
poparnassus Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   30
 
Bon j'ai trouver un site qui dit ceci:
le sitte == https://www.infomaniak.com/fr/support/faq/1312/mysql-fonction-load-data-local-infile

Pour lutter contre les actes de malveillances et continuer à protéger autant que possible les données de nos clients, nous avons désactivé la fonction "LOAD DATA LOCAL INFILE".

Ne sont pas concernées par cette modification les personnes important leurs fichiers CSV (à condition de ne pas cocher "CSV via LOAD DATA") via phpMyAdmin.

La fonction "LOAD DATA LOCAL INFILE" permet d'importer un fichier CSV dans une table MySQL et est malheureusement désormais fréquemment utilisée par les pirates pour obtenir l'accès à certains sites hébergés sur des machines acceptant cette fonction.

Nous fournissons bien entendu une alternative pour continuer à importer des données au format CSV dans une table MySQL. Ci-dessous, un exemple en quelques lignes PHP faciles à implémenter dans votre script PHP ou créez simplement un nouveau fichier PHP dans votre répertoire /web:

<?

// Le code proposé ci-dessus ne l'est qu'à titre d'exemple pour que vous puissiez
// comprendre comment remplacer cette fonction, libre à vous de développer
// votre propre moyen plus efficace pour insérer des données.

$NomDuFichier = "data.csv";

// ouverture du fichier csv en lecture
$handle = fopen($NomDuFichier, "r");
if ($handle) {
// decomposition de chaque ligne du fichier csv
while (($data = fgetcsv($handle, 1000, ";", """)) !== FALSE) {
$num = count($data)-1;
// generation de la requete SQL
$query = "INSERT INTO `test` VALUES (";
for ($c=0; $c < $num; $c++) {
$query .= "'" . mysql_real_escape_string($data[$c]) ."',";
}
$query .= "'" . mysql_real_escape_string($data[$num]) ."')";
// insertion de la ligne dans la base MySQL
mysql_query($query, $link) or die (mysql_error());
$query = NULL;
}
// fermeture du fichier csv
fclose($handle);
} else {
echo "<p>Erreur: impossible d'ouvrir le fichier.</p>\n";
exit(1);
}
?>
0