database:utilitaires-imports

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
database:utilitaires-imports [2021/05/04 15:03] – [Supprimer des colonnes] jpmilcentdatabase:utilitaires-imports [2024/09/04 16:13] (Version actuelle) – [Extraction de lignes d'un fichier] jpmilcent
Ligne 33: Ligne 33:
  
 Compter le nombre de ligne d'un fichier : <code bash> wc -l synthese.csv </code> Compter le nombre de ligne d'un fichier : <code bash> wc -l synthese.csv </code>
 +
 +==== Visualiser un fichier TSV dans un terminal ====
 +Pour afficher les premières lignes d'un fichier TSV sans l'ouvrir en totalité (gros volume) dans un terminal :
 +  * Créer un fichier ''pretty_tsv.sh'' dans ''~/bin'' et y insérer les lignes suivantes : <code bash>
 +#!/bin/bash
 +perl -pe 's/((?<=\t)|(?<=^))\t/ \t/g;' "$@" | head -n 10 | column -t -s $'\t' | exec less  -F -S -X -K 
 +</code>
 +  * Editer ''~/.bash_aliases'' et insérer la ligne suivante : <code bash>
 +# pretty tsv with first ten lines
 +alias watch='~/bin/pretty_tsv.sh'
 +</code>
 +  * Vous pouvez lancer la commande ''watch ../chemin/vers/fichier'' dans le Terminal
  
 ===== Extraire les lignes comprenant un nombre de tabulation anormal ===== ===== Extraire les lignes comprenant un nombre de tabulation anormal =====
Ligne 53: Ligne 65:
 <code bash> <code bash>
 # Afficher le nombre de tabulation des lignes du fichier contenant un extrait de la synthese # Afficher le nombre de tabulation des lignes du fichier contenant un extrait de la synthese
-# Le chemin /data-nvme/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E +# Le chemin /data-nvme/jpmilcent/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E 
-grep -n -o -P "\t" synthese.extract.csv | sort -n -T /data-nvme/tmp/ | uniq -c | cut -d : -f 1+grep -n -o -P "\t" synthese.extract.csv | sort -n -T /data-nvme/jpmilcent/tmp/ | uniq -c | cut -d : -f 1
  
 # Extraire le nombre de tabulation anormal (**ici différent de 58**) et le numéro de la ligne correspondante : # Extraire le nombre de tabulation anormal (**ici différent de 58**) et le numéro de la ligne correspondante :
-# Le chemin /data-nvme/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E +# Le chemin /data-nvme/jpmilcent/tmp/ correspond à un dossier temporaire sur un disque rapide SSD NVM-E 
-grep -n -o -P "\t" synthese.csv | sort -n -T /data-nvme/tmp/ | uniq -c | cut -d : -f 1 | grep -P -v "^\s+58 " > ./synthese.tab_errors.txt+grep -n -o -P "\t" synthese.csv | sort -n -T /data-nvme/jpmilcent/tmp/ | uniq -c | cut -d : -f 1 | grep -P -v "^\s+58 " > ./synthese.tab_errors.txt
  
 # Supprimer le nombre de tabulation (occupant les 8 premières caractères de chaque ligne) # Supprimer le nombre de tabulation (occupant les 8 premières caractères de chaque ligne)
Ligne 80: Ligne 92:
  
 ==== Extraire les lignes dupliquées ===== ==== Extraire les lignes dupliquées =====
-  * Extraire les lignes dupliquées : <code bash> sort -T /data-nvme/tmp/ synthese.csv | uniq -cd > synthese.duplicates.csv </code>+  * Extraire les lignes dupliquées : <code bash> sort -T /data-nvme/jpmilcent/tmp/ synthese.csv | uniq -cd > synthese.duplicates.csv </code>
   * Extraire les lignes dupliquées en se basant seulement sur le contenu de la première colonne (remplacer le chiffre dans ''$1'' pour indiquer une autre colonne) : <code bash> awk 'cnt[$1]++{if (cnt[$1]==2) print prev[$1]; print} {prev[$1]=$0}' synthese.csv > synthese.duplicates-first-column.csv </code>   * Extraire les lignes dupliquées en se basant seulement sur le contenu de la première colonne (remplacer le chiffre dans ''$1'' pour indiquer une autre colonne) : <code bash> awk 'cnt[$1]++{if (cnt[$1]==2) print prev[$1]; print} {prev[$1]=$0}' synthese.csv > synthese.duplicates-first-column.csv </code>
  
Ligne 102: Ligne 114:
 Les lignes possédant une valeur dupliquée dans la colonne sélectionnée devraient Les lignes possédant une valeur dupliquée dans la colonne sélectionnée devraient
 apparaître avec un texte rouge. apparaître avec un texte rouge.
 +
 +===== Trouver les valeurs NULL dans les champs obligatoires =====
 +  * Vérifier la présence de valeur NULL (=''\N'') dans la colonne 33 (= //nom_cite//) :
 +    * Vérifier que la colonne 33 correspond bien au champ //nom_cite// avec : <code bash>head -1 synthese.csv | cut -f33</code>
 +    * Extraction des lignes contenant "\N" dans la colonne 33 : <code bash>grep -P '^(?:[^\t]+\t){32}\\N\t' synthese.csv  > synthese.col33_null.csv</code>
 +
  
 ===== Affichage/Extraction de lignes contenant une chaine particulière ===== ===== Affichage/Extraction de lignes contenant une chaine particulière =====
Ligne 133: Ligne 151:
 <code bash> cut --complement -f 36-37 synthese.csv > synthese.cuted.csv </code> <code bash> cut --complement -f 36-37 synthese.csv > synthese.cuted.csv </code>
  
 +Sélections de colonnes pour réaliser un fichier de corrections. Ex. sélection des colonnes 1, 3 et 5 à 6, les autres sont supprimées :
 +<code bash> cut --complement -f 2,4,7- synthese.csv > synthese.fix-2022-03-29.csv </code>
 +
 +**NOTES** : préalablement à l'utilisation de ''cut'' assurez vous d'avoir remplacer tous les retours à la ligne présent dans les colonnes par des caractères tel que ''\n'' ou ''\r\n'' voir la section //Contourner l'erreur : "sed: la taille du tampon d'entrée d'expression régulière est plus grand que INT_MAX"// ci-dessous.
 +
 +===== Remplacer le contenu d'une colonne =====
 +Remplacer le contenu de la 33ème colonne dans le fichier //synthese.csv// quand elle contient ''\N'' avec la commande : <code bash> sed -i -E 's#^(([^\t]*\t){32})\\N\t#\1\t#' synthese.csv </code>
 ===== Remplacement de chaine ===== ===== Remplacement de chaine =====
  
Ligne 150: Ligne 175:
 sed -i -z 's/\(\t"[^"\t\n]*\)\n/\1\\n/g' synthese.csv sed -i -z 's/\(\t"[^"\t\n]*\)\n/\1\\n/g' synthese.csv
 </code> </code>
 +
 +===== Stats =====
 +  * Date d'observation la plus ancienne : <code bash> csvstat -t -q '"' -u 0 -e "UTF-8" -c date_min --min synthese.csv </code>
  
 ===== Contourner l'erreur : "sed: la taille du tampon d'entrée d'expression régulière est plus grand que INT_MAX" ===== ===== Contourner l'erreur : "sed: la taille du tampon d'entrée d'expression régulière est plus grand que INT_MAX" =====
Ligne 168: Ligne 196:
  
 # Recréation du fichier synthese.csv à partir des 2 fichiers de 2 millions de lignes # Recréation du fichier synthese.csv à partir des 2 fichiers de 2 millions de lignes
-cat synthese.2.csv >> synthese.1.csv ; mv synthese.1.csv synthese.csv+cat synthese.2.csv >> synthese.1.csv ; mv synthese.1.csv synthese.csv ; rm -f synthese.2.csv
 </code> </code>
  • database/utilitaires-imports.1620140592.txt.gz
  • Dernière modification : 2021/05/04 15:03
  • de jpmilcent