Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[mysql] unificare due backup

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[mysql] unificare due backup

Postdi 12 » 25/04/05 17:54

allora ho due backup.. un backup nuovo e un backup vecchio ..

al backup nuovo manca una parte del backup vecchio e al vecchio manca la parte del nuovo :-?

è un rebus ma è cosi :-? :-?

come posso fare a "unire" i due backup in modo da averne uno omogeneo?

i due backup hanno circa 35/40 mila righe .. e maneggiarle a mano ci mettere dei giorni :-?

non esiste programma del tipo che mette a confronto i due file se la stringa esiste la lascia se non esiste la aggiunge :?: :-? :undecided: :roll:
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Sponsor
 

Postdi archimede » 25/04/05 18:00

Tanto per capire, [sql] nell'oggetto sta per SQL-Server?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi *~Hayabusa~* » 25/04/05 18:03

Qua c'è qualche soft, vedi un po :undecided:
..ed e' cibo per la mente,
acqua dalla sorgente,
luce fosforescente
laddove il buio e' costante ..
*~Hayabusa~*
Hardware Admin
 
Post: 1386
Iscritto il: 12/05/02 22:44
Località: Davanti al monitor..

Postdi 12 » 25/04/05 18:10

archimede ha scritto:Tanto per capire, [sql] nell'oggetto sta per SQL-Server?

Alessandro


"backup".sql intendo l' estensione dei due backup..
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi 12 » 26/04/05 09:42

al posto di INSERT INTO davanti alle varie righe .. non esiste un comanda che dice "se questa riga esiste droppala se non esiste inseriscila..)

cioè roba tipo DROP TABLE IF EXISTS adattato per la riga della tabella e non tutta la tabella :undecided:
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi pjfry » 26/04/05 09:49

ma da dove escono questi backup?
di solito le tabelle hanno almeno una chiave primaria per cui non si possono inserire 2 righe 'uguali'... ma tu cosa intendi per 'uguali'?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi 12 » 26/04/05 10:08

mi rispiego in modo piu' chiaro ^_^

allora.. ho:

back1 = backup vecchio che ha la parte che vorrei integrare nel back2 ossia quello nuovo..

in pratica io ho sti due backup e al vecchio manca la parte di nuovo e al nuovo la parte di vecchio.. ma hanno una parte in comune..

io dovrei confrontare i due backup e vedere quali righe hanno in comune e dove ci sono righe nuove integrarle..

in modo da avere un backup "omogeneo"

io ho provato a troncare la parte DROP TABLE IF EXIST e lasciare INSERT INTO [valore riga] ..

ma cosi' facendo lui cosa fa? mi ripristina il database ma nn toglie le righe uguali..

per farvi capire meglio:

back1 : A B C
back2: A B C D

prima ripristini back1
poi back2

e ti ritrovi

A
A
B
B
C
C
D

e io vorrei che fossec cosi':

A
B
C
D
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi pjfry » 26/04/05 10:17

bell'esempio... se fosse così non basterebbe back2 ? :roll: :P

se sei sicuro che non ci sono problemi di chiavi apri i file con ultraedit, confrontali e copia e incolla, non dovrebbe tanto lungo
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi 12 » 26/04/05 10:22

giusto :lol: bell' esempio di *** :D
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi 12 » 26/04/05 11:14

facciamo cosi' la tiro brevo.. vi dico cosa mi servirebbe ..

vorrei sapere se esiste un comando del tipo che se io ho due stringhe uguali come questa:

INSERT INTO phpbb_auth_access (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments, auth_mod) VALUES('12', '56', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1');

me ne viene troncata una...


mi chiedevo se esiste un drop per le stringhe? drop [nn so come si chiama il nome esatto della stringa che ho postato sopra] if exist al posto di insert into?? [????????]
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi archimede » 26/04/05 12:21

Se ho ben capito, hai due files in formato txt (con estensione .sql).

Questi due files contengono dei comandi SQL per inserire dei records in una o più tabelle.

Se la/e tabella/e hanno una chiave primaria non dovresti aver problemi.

Se sei qui è perché (suppongo):

1) Non c'è una chiave primaria (o se c'è il secondo import ti dà degli errori che non sai risolvere)

2) I files contengono un numero rilevante di records (altrimenti con il copia e incolla avresti già risolto da solo)

Se le due condizioni di cui sopra sono vere hai, secondo me, queste opzioni:

1) Definire una chiave primaria sulla tabella ed ignorare gli errori di chiave duplicata durante l'import
2) Importare i due files in due tabelle diverse e fare il merge al termine dell'import
3) Continuare a cercare un programma per eliminare le righe doppie dai files di testo

Per la terza opzione non ti posso aiutare (e probabilmente sei nel forum sbagliato).

Personalmente opterei per la 1: semplice ed efficace. L'unico problema potrebbe essere che se stiamo parlando di grandi numeri (dove "grandi" > 10.000.000) di records l'import potrebbe essere rallentato.

Comunque sarebbe utile che specificassi:

a) come sono stati prodotti questi files .sql
b) di quale db stiamo parlando
c) quanti records ci sono in ciascun file

Infine, se si tratta di dati critici, consiglio di esaminare modalità di backup alternative a quella attuale.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi 12 » 26/04/05 13:31

archimede ha scritto:
1) Non c'è una chiave primaria (o se c'è il secondo import ti dà degli errori che non sai risolvere)

2) I files contengono un numero rilevante di records (altrimenti con il copia e incolla avresti già risolto da solo)


La 2, sono circa 40mila records ..


1) Definire una chiave primaria sulla tabella ed ignorare gli errori di chiave duplicata durante l'import
2) Importare i due files in due tabelle diverse e fare il merge al termine dell'import
3) Continuare a cercare un programma per eliminare le righe doppie dai files di testo

Personalmente opterei per la 1: semplice ed efficace. L'unico problema potrebbe essere che se stiamo parlando di grandi numeri (dove "grandi" > 10.000.000) di records l'import potrebbe essere rallentato.


cosa bisognerebbe fare precisamente con la prima opzione da te consigliata?

Comunque sarebbe utile che specificassi:

a) come sono stati prodotti questi files .sql
b) di quale db stiamo parlando
c) quanti records ci sono in ciascun file



a) sono stati prodotti dal backup del database del forum.. soltanto che il piu' vecchio comprende una parte del forum che è andata a farsi fott nella parte + recente.. e anche facendo un backup del vecchio perderei tutta la parte + nuova .. quindi devo unire la parte nuova e quella vecchia .. in modo da "riunificare il tutto"

b) database del forum [phpbb 2.0.14]

c) nel + vecchia stiamo sui 40mila e nalla + nuova diciamo 2/3 mila records in meno
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi archimede » 26/04/05 13:56

Dalla home page di phpbb:
Based on the powerful PHP server language and your choice of MySQL, MS-SQL, PostgreSQL or Access/ODBC database servers, phpBB is the ideal free community solution for all web sites.
Quale db hai scelto?
cosa bisognerebbe fare precisamente con la prima opzione da te consigliata?
Precisamente cosa non ti è chiaro di "Definire una chiave primaria sulla tabella"?

Alessandro

PS: ovviamente i records che sono stati cancellati dopo il backup1 te li ritroverai nel db al termine del restore.
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi 12 » 26/04/05 14:10

mysql

Precisamente cosa non ti è chiaro di "Definire una chiave primaria sulla tabella"?


esatto
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi archimede » 26/04/05 14:28

12 ha scritto:
Precisamente cosa non ti è chiaro di "Definire una chiave primaria sulla tabella"?


esatto
:eeh: :eeh:

Comunque, prova qui e qui.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi 12 » 26/04/05 16:13

mah a dire il vero c ho capito poco...

basta primary key???
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi 12 » 26/04/05 19:20

ok dai.. una cosa forse maligna l' ho fatta.. ma l' ho fatta ^_^

allora ho preso il backup vecchio e l' ho ripristinato in phpmyadmin sul db.. senza toccarlo .. poi ho preso il database nuovo a cui manca 1 parte del vecchio e ho tolto le parti in cui parla del drop della tabella se esiste e ho lasciato solo i record ...

mo nel database ho i record raddoppiati.. perchè si sono uniti anche i record che erano uguali per tutti e due i backup..

mo devo trovare qualcosa che mi elimina nelle tabella i record doppi ... esiste?
12
Utente Senior
 
Post: 1413
Iscritto il: 12/01/04 19:45
Località: Milèn

Postdi archimede » 27/04/05 08:15

Codice: Seleziona tutto
CREATE TABLE nuovatabella AS SELECT DISTINCT * FROM nome_tabella_con_duplicati;
DROP TABLE nome_tabella_con_duplicati;
CREATE TABLE nome_tabella_con_duplicati AS SELECT * FROM nuovatabella;
DROP TABLE nuovatabella;
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi pjfry » 27/04/05 08:46

12 ha scritto:mo devo trovare qualcosa che mi elimina nelle tabella i record doppi ... esiste?

tanto per chiarezza... quello che ha scritto archimede funziona se per 'record doppi' intendi righe esattamente uguali, in tutti i campi... ok?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi archimede » 27/04/05 08:56

pjfry ha scritto:
12 ha scritto:mo devo trovare qualcosa che mi elimina nelle tabella i record doppi ... esiste?

tanto per chiarezza... quello che ha scritto archimede funziona se per 'record doppi' intendi righe esattamente uguali, in tutti i campi... ok?
In assenza di chiave primaria non vedo cos'altro potrebbe intendere... ;)

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Prossimo

Torna a Programmazione


Topic correlati a "[mysql] unificare due backup":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti