Utiliser un fichier CSV
preliator
-
jee pee Messages postés 41521 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 41521 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Ayant une bonne connaissance en base de données et SQL, j'aimerais pouvoir automatiser la tâche de recupération des données d'un fichier CSV avec python.
L'idée, ça serait d'avoir un fichier csv contenant une liste de colonnes et de lignes variables du type :
NOM;PRENOM;NAISSANCE;VILLE;AGE
CASTEL;JULIETTE;10/12/2000;LYON;15
COHEN;PABLO;16/05/1980;LYON;78
AL BELA;ABDEL;02/09/2001;LA CIOTAT;23
CHAPELON;FRED;03/10/2012;PARIS;56
... et de créer un fichier .txt en sortie contenant ce script :
[CODE]
insert into NOM_DE_LA_TABLE (nom, prenom, naissance, ville, age) values
('CASTEL', 'JULIETTE', '10/12/2000', 'LYON', 15),
('COHEN', 'PABLO', '16/05/1980', 'LYON', 78),
etc ...
[/CODE]
Malheureusement, je ne sais pas trop comment m'y prendre.
Merci et bonnes fêtes.
Ayant une bonne connaissance en base de données et SQL, j'aimerais pouvoir automatiser la tâche de recupération des données d'un fichier CSV avec python.
L'idée, ça serait d'avoir un fichier csv contenant une liste de colonnes et de lignes variables du type :
NOM;PRENOM;NAISSANCE;VILLE;AGE
CASTEL;JULIETTE;10/12/2000;LYON;15
COHEN;PABLO;16/05/1980;LYON;78
AL BELA;ABDEL;02/09/2001;LA CIOTAT;23
CHAPELON;FRED;03/10/2012;PARIS;56
... et de créer un fichier .txt en sortie contenant ce script :
[CODE]
insert into NOM_DE_LA_TABLE (nom, prenom, naissance, ville, age) values
('CASTEL', 'JULIETTE', '10/12/2000', 'LYON', 15),
('COHEN', 'PABLO', '16/05/1980', 'LYON', 78),
etc ...
[/CODE]
Malheureusement, je ne sais pas trop comment m'y prendre.
Merci et bonnes fêtes.
A voir également:
- Fichier csv python
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Je ne fais pas vraiment de python donc ne comprends pas entièrement ton code.
Moi j'imagine un code du style chargement dans un tableau, pas utiliser les headers pour avoir un code plus générique
(il faut affiner pour placer des virgules entre les champs et des simples cotes par encadrer les valeurs)
Moi j'imagine un code du style chargement dans un tableau, pas utiliser les headers pour avoir un code plus générique
import csv with open('passwd.csv', newline='') as f: reader = csv.reader(f) for i in range(len(reader)): if i = 1: print('insert into NOM_DE_LA_TABLE (') for j in range(len(reader[i])): print(reader[i][j], end=' ') print(') values ') else print('(') for j in range(len(reader[i])): print(reader[i][j], end=' ') print(')') print()
(il faut affiner pour placer des virgules entre les champs et des simples cotes par encadrer les valeurs)
Bonjour,
Il existe un module python pour gerer des csv : https://www.quennec.fr/trucs-astuces/langages/python/python-le-module-csv
En lecture tu obtiens un tableau, il faut alors faire une boucle sur le tableau pour écrire dans un fichier texte. La 1ère ligne du tableau étant traitée différemment des suivantes.
Tu peux aussi tout traiter toi même. Un csv c'est un fichier texte tout bête. Tu as le fichier csv en entrée, un fichier texte en sortie et tu traites les lignes une par une en découpant la ligne avec le séparateur ; La 1ère ligne du fichier étant là aussi traitée différemment des suivantes.
Cdlt
Il existe un module python pour gerer des csv : https://www.quennec.fr/trucs-astuces/langages/python/python-le-module-csv
En lecture tu obtiens un tableau, il faut alors faire une boucle sur le tableau pour écrire dans un fichier texte. La 1ère ligne du tableau étant traitée différemment des suivantes.
Tu peux aussi tout traiter toi même. Un csv c'est un fichier texte tout bête. Tu as le fichier csv en entrée, un fichier texte en sortie et tu traites les lignes une par une en découpant la ligne avec le séparateur ; La 1ère ligne du fichier étant là aussi traitée différemment des suivantes.
Cdlt
Merci pour votre réponse.
Grâce à votre site, j'ai un début de piste avec ce code :
Ou j'arrive à afficher les éléments comme dans l'exemple :
('CASTEL', 'JULIETTE', '10/12/2000', 'LYON', 15),
('COHEN', 'PABLO', '16/05/1980', 'LYON', 78),
etc
Mais ça reste extrêmement manuel et le code ne s'adapte pas au nombre changeant de colonne. Je continue de chercher un moyen de le rendre plus efficace.
Merci.
Grâce à votre site, j'ai un début de piste avec ce code :
import csv import re with open("data.csv", "r", newline = '') as donnees: reader = csv.reader(donnees, delimiter = ";") for row in reader: print("(" + "'"+ row[0] + "'" + ',' + "'" + row[1] + "'" + ',' + "'" + row[2] + "'" + ',' + "'" + row[3] + "'" + ',' + row[4] + ")" + ',')
Ou j'arrive à afficher les éléments comme dans l'exemple :
('CASTEL', 'JULIETTE', '10/12/2000', 'LYON', 15),
('COHEN', 'PABLO', '16/05/1980', 'LYON', 78),
etc
Mais ça reste extrêmement manuel et le code ne s'adapte pas au nombre changeant de colonne. Je continue de chercher un moyen de le rendre plus efficace.
Merci.