Importation de donnée *.cvs

Résolu/Fermé
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - Modifié le 8 avril 2017 à 19:54
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - 9 avril 2017 à 17:55
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 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
8 avril 2017 à 20:47
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 vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
8 avril 2017 à 20:54
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 vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
Modifié le 8 avril 2017 à 23:55
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 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019
9 avril 2017 à 10:30
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 vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
9 avril 2017 à 17:55
ok je vais voir ça, merci
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
Modifié le 9 avril 2017 à 00:03
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