Outils pour utilisateurs

Outils du site


linux:scripts_awk:sqldump2txt

sqldump2txt

Un script pour transformer un dump mysql (structure seule) en txt. Les préfixes et suffixes utilisés ici sont prévus pour une syntaxe dokuwiki, mais peuvent facilement être remplacés par ce que l'on veut.

#!/usr/bin/awk -f
BEGIN {
  # pour la mise en forme
  tb_prefix = "=== "
  tb_suffix = " ==="
  field_prefix = "  * "
  field_suffix = ""
  key_prefix = "    *//"
  key_suffix = "//"
  short=0 # version courte sans les commentaires de champ ni les clés
}
# un peu de nettoyage
{
  gsub("''","'")
  gsub("  "," ")
  gsub("  "," ")
  gsub("  "," ")
  gsub("  "," ")
}
 
/CREATE TABLE/ {
  curtab=1; # début d'une définition de table
  match($0, "`.*`");
  tb=substr($0, RSTART+1, RLENGTH-2);
  delete fields
  delete keys
  k=0
  next
}
 
/ENGINE=/ {
  curtab=0; # fin d'une définition de table
  c=""
  out=""
  i=index($0, "COMMENT")+9;
  if (i>9) {
    c=substr($0, i,length($0)-i-1)
  }
  print tb_prefix tb" ("c")" tb_suffix
  for (f in fields) {
    if (short) {
      out = out f ", "
    } else {
      out = out field_prefix f " (" fields[f] ")" field_suffix "\n"
    }
  }
  if (short) {
    out = field_prefix out field_suffix
  }
  for (k in keys) {
    if (short==0) {
      out = out key_prefix keys[k] key_suffix
    }
  }
  print out
}
 
{
  if (curtab>0) {
    gsub("`","")
    if (index($0," KEY ")>0) {
      k++
      keys[k]=$0
    } else {
      f=$1;
      i=index($0, "COMMENT")+9;
      if (i>9) {
        fields[f]=substr($0, i,length($0)-i-1)
      } else {
        fields[f]=""
      }
    }
  }
}
linux/scripts_awk/sqldump2txt.txt · Dernière modification: 20/02/2009 16:15 de daniel