Signaler

Importation de donnée *.cvs [Résolu]

Posez votre question poparnassus 404Messages postés vendredi 28 mars 2014Date d'inscription 7 octobre 2017 Dernière intervention - Dernière réponse le 9 avril 2017 à 17:55 par poparnassus
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 ?

Utile
+0
plus moins
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?
poparnassus 404Messages postés vendredi 28 mars 2014Date d'inscription 7 octobre 2017 Dernière intervention - 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
Répondre
poparnassus 404Messages postés vendredi 28 mars 2014Date d'inscription 7 octobre 2017 Dernière intervention - 8 avril 2017 à 23:49
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
Répondre
yg_be 3569Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 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
Répondre
poparnassus 404Messages postés vendredi 28 mars 2014Date d'inscription 7 octobre 2017 Dernière intervention - 9 avril 2017 à 17:55
ok je vais voir ça, merci
Répondre
Donnez votre avis
Utile
+0
plus moins
Bon j'ai trouver un site qui dit ceci:
le sitte == https://www.infomaniak.com/fr/support/faq/1312/support-de-la-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);
}
?>
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !