Vous n'êtes pas identifié(e).
Pages : 1
J'ai trouvé l'explication , en fait dans mon fichier csv j'avais 8 champs texte qui commençait par un guillemet unique , quand je fais COPY lors du balayage Postgresql trouve le premier guillemet et cherche ensuite le second , une fois trouvé il met tout ça ensemble ce qui fait que à partir d'un fichier csv qui a des champs avec quelque dizaines de caractères , je me retrouve avec 4 champs qui ont plusieurs millions de caractères , ce qui explique l'indexation impossible et la disparition de plusieurs milliers de lignes et que quand Postgresql exporte la table en csv on retrouve le nombre de lignes car il a conservé le caractère LF .
En fait c'est ce que j'ai cru comprendre .
Après quelques manipulations voila ce que je constate .
Comptage du nombre de lignes avec Python du fichier csv :2 902 297
Insertion avec du code python du fichier csv dans une table Postgres , c'est à dire balayage du fichier ligne par ligne avec requête insert à chaque ligne et comptage des enregistrements ( ça ma quand même pris plusieurs heures )
Python à compter 2 902 297 enregistrements , quand je fait COUNT sur la table on a 2 902 297 lignes , donc tout va bien
Quand je rentre le même fichier CSV avec une requête SQL commande COPY , j'ai avec COUNT sur la table 1 554 136 lignes , mais quand j'exporte ma table en fichier CSV , le fichier résultant à 2 902 297 lignes , étonnant non .
J'ai fait ça pour plusieurs fichiers et à chaque fois , quand j'importe avec COPY je n'ai pas le même nombre de lignes dans la table et le fichier CSV .
Bon sur ce , je vais passer à autre chose .
Pour le csv je regarde ça de plus près , à mon avis plus de 1 400 000 lignes qui manque cela doit se voir !!!! ou s'expliquer assez simplement .
Malheureusement je ne peux pas l'ouvrir dans un tableur , je vais regarder cela avec Python .
Je fais de l'informatique ,de la base de données en amateur donc rien d'urgent , encore merci de m'avoir répondu .
Compris pour les index , en fait mon champ peut contenir plus 40 caractères .
.
Pour le fichier .csv ( je suis sur Linux ) quand je l'ouvre avec GEANY , normalement une ligne un enregistrement avec pour chaque ligne le champ 1 puis la virgule puis le champ 2 puis le caractère \n LF .
Et j'ai bien 2 902 593 lignes , après dans le champ 2 j'ai des caractères non ASCII cela peut'il poser problème .
Bonjour
Je suis tout débutant en Postgresql donc il doit avoir des choses que je n'ai pas faites .
J'ai une table avec deux champs sans aucun index avec actuellement 1 554 138 lignes , quand je veux mettre un index sur un champ j'ai le message d'erreur suivant :
"ERREUR: la ligne index requiert 1298240 octets, la taille maximum est 8191".
D'autre part à partir d'une table vide sans index quand j'ai voulu importer un fichier .csv avec 2 902 593 lignes il a été importer que 1 554 138 lignes sans message d'erreur , bizarre non .
Texte de mon SQL : COPY nom(id,nom_art) FROM '/home/notill/xaa_8.csv' DELIMITER ',' CSV ;
A la création d'une table y a t'il des limites à lever ?
J'ai fait tout ça à partir de pgadmin4 , Postgresql 12.1 .
Merci d'avance pour les réponses .
Pages : 1