[Lugge] Re: Problema con backup di MySQL

  • From: Daniele Venzano <venza@xxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Wed, 25 Apr 2001 22:08:56 +0200

Ti ho scritto un piccolo programmino in C che fa il lavoro, e' in
allegato. Funziona bene sul pezzo che hai mandato.
Lo compili con
gcc main.c -o filtro

dopodiche' fai filtro <nomefile> e lui ti stampa un . per ogni riga
elaborata.

L'unico problema e' il seguente:
per ogni riga conta 7 virgole, poi inserisce un ' poi conta altri 8
caratteri e inserisce un altro '
quindi non fa nessun controllo se la riga sia giusta o meno. Ti
conviene isolare la parte da modificare in un altro file e poi eseguire
il filtro solo su quel pezzo.

ciao ciao

On Wed, Apr 25, 2001 at 11:08:15AM +0200, Fabrizio Pucci wrote:
> 
> ANTEFATTO
> 
> Volendo passare dalla Red Hat 7.0 alla 7.1 ho provveduto a fare il back-up
> dei dati. Tra le altre cose ho eseguito il backup del mio database musicale
> su MySQL, facendo il dump e trasformando l'eseguibile con i dati, in un
> lungo file di testo contenente le query SQL per ricreare il db
> 
> PROBLEMA
> 
> Malauguratamente il dump ha creato il file con un piccolo errore. Ecco
> alcune righe di esempio
> 
<snip>
> 
> Si tratta di un tipico problema da "Amministratori di sistema" ma anche da
> "Programmatori"...
> 
> C'è  qualcuno tra voi così bravo da riuscire a darmi una mano? ;-))))
> 
> Grazie
> 
> Fabrizio Pucci
> 
> 
> 

-- 
-----------------------------------------------------
Daniele Venzano
Senior member of the Linux User Group Genova (LUGGe)
E-Mail: venza@xxxxxx
Web: http://digilander.iol.it/webvenza/
LUGGe: http://lugge.ziobudda.net



-- Attached file included as plaintext by Listar --

/* Scritto da Daniele Venzano in una mezzoretta, tutti i diritti */
/* riservati. Coperto dalla licenza GPL v.2 */
#include <stdio.h>
#include <string.h>

#define NUMERO_VIRGOLE 7
#define LUNG_TEMPO 8

int main(int argc, char *argv[])
{
        FILE *fp_read,*fp_write;
        char line_buf[200],c;
        int num_virgole=0;
        int index;
        int index2;
        int i;
        
        if(argc < 2)
        {
                fprintf(stderr, "Usage: filtro <nome_file>\n");
                exit(1);
        }
        fp_read=fopen(argv[1],"r");
        if(fp_read==NULL)
        {
                fprintf(stderr,"%s non trovato\n",argv[1]);
                exit(1);
        }
        memset(line_buf,'\0',200);
        index=0;
        fp_write=fopen("output.txt","w");
        printf("\n");
        while((c=fgetc(fp_read))!=EOF)
        {
                line_buf[index]=c;
                if(c=='\n')
                {
                        printf(".");
                        for(i=0;i<=index;i++)
                                fputc(line_buf[i],fp_write);
                        memset(line_buf,'\0',200);
                        index2=0;
                        index=0;
                        num_virgole=0;
                        continue;
                }
                if(c==',')
                {
                        num_virgole++;
                        if(num_virgole==NUMERO_VIRGOLE)
                        {
                                index++;
                                index2=LUNG_TEMPO;
                                line_buf[index]='\'';
                                index++;
                                while(index2>0)
                                {
                                        line_buf[index]=fgetc(fp_read);
                                        index++;
                                        index2--;
                                }
                                line_buf[index]='\'';
                                num_virgole=0;
                        }
                }
                index++;
        }
        printf("\nIl file DOVREBBE essere a posto, filtrato in output.txt\n");
        return 0;
}



Other related posts: