Unire 2 file CSV ...come ?

Se Windows genera un errore, hai un problema di virus o vuoi discutere/segnalare l'uscita della nuova versione di un software per la piattaforma Microsoft, questa è la sezione giusta.
Regole del forum
Rispondi
Avatar utente
1enry1
Livello: BD-ROM (6/15)
Livello: BD-ROM (6/15)
Messaggi: 236
Iscritto il: sab nov 02, 2013 3:29 pm

Unire 2 file CSV ...come ?

Messaggio da 1enry1 » gio dic 22, 2016 3:30 pm

quesito per un vero mago di office:


ho un database CSV con vari campi (nome, citta, stato ecc.... )

ora con un nuovo aggiornamento ALCUNI campi in questo

database non sono stati piu messi !


c'e una possibilita' e ovvio in modo "veloce" di fare una specie

di MERGE dei 2 databse in modo che quando ho il NUOVO

database dove mancano appunti alcuni campi , posso unire con

i dati del vecchio db che li ha tutti? credo sia fattibile ma come ?



magari per velocizzare visto che sono oltre 45.000 voci !

uno script , e meglio dite usare Excell o OpenOffice ?


grazie a chi mi sapra' aiutare :grazie




PS devo ancora aprirlo, come si capisce se fatto con excell o con access ?

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Unire 2 file CSV ...come ?

Messaggio da System » gio dic 22, 2016 3:30 pm


Avatar utente
PippoDJ
Moderatore
Moderatore
Messaggi: 1412
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Unire 2 file CSV ...come ?

Messaggio da PippoDJ » mer dic 28, 2016 5:58 pm

Ciao 1enry1,
ho pensato per un po' a come risolvere il problema usando i linguaggi di scripting più comuni, ma tutti i tentativi hanno portato solo a listati molto complessi e difficili da gestire.

Poi ho provato anche Windows PowerShell e, devo dire, sono rimasto sorpreso dalla semplicità disarmante del risultato. Con un'unica riga di codice, è stato possibile ottenere esattamente quello che ti serve:

Codice: Seleziona tutto

@(Import-Csv vecchiodb.csv -UseCulture) + @(Import-Csv nuovodb.csv -UseCulture) | Export-Csv unione.csv -UseCulture -NoTypeInformation
  1. Il comando deve essere eseguito nella stessa cartella dove sono contenuti entrambi i documenti CSV.
  2. E' importante che vecchiodb.csv sia quello che contiene tutti i campi, mentre nuovodb.csv deve essere quello che ne contiene solo una parte.
  3. Ovviamente è necessario che i campi comuni ad entrambi i file abbiano esattamente lo stesso nome nelle intestazioni.
1enry1 ha scritto:PS devo ancora aprirlo, come si capisce se fatto con excell o con access ?
Un documento CSV è un semplice file di testo: non credo sia possibile capire con quale applicazione sia stato creato e, comunque, dovrebbe essere irrilevante.

Ciao, Pippo.

Avatar utente
1enry1
Livello: BD-ROM (6/15)
Livello: BD-ROM (6/15)
Messaggi: 236
Iscritto il: sab nov 02, 2013 3:29 pm

Re: Unire 2 file CSV ...come ?

Messaggio da 1enry1 » ven gen 06, 2017 2:15 pm

devo unire 2 database fatti cosi :

Immagine
http://i63.tinypic.com/2ebu0qr.jpg


strano pero' che in Excell sia tutto una riga e senza i vari campi , tipo nome, citta nazione , boh ?


mentre in Calc appaiono separati ma sempre TUTTI i gruppi sotto la voce "Standard"...

ora premesso che non ci capisco una mazza, come faccio s fondere il NUOVO data base dove mancano alcune voci ( tipi cognome, citta, stato) quindi c'e solo CALL e Nazione ...con uno vecchio dove ci sono TUTTI i campi ?

pare si possa fare tutto con CALC ? ma come faccio ?
grazie x aiuto, mi raccomando spiegatemi in modo semplice grazie

Avatar utente
PippoDJ
Moderatore
Moderatore
Messaggi: 1412
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Unire 2 file CSV ...come ?

Messaggio da PippoDJ » ven gen 06, 2017 8:21 pm

Ciao 1enry1,
1enry1 ha scritto:strano pero' che in Excell sia tutto una riga e senza i vari campi , tipo nome, citta nazione , boh ?
Succede perché in Italia, così come nelle altre nazioni che usano la virgola nei numeri decimali, il separatore dei campi in un documento CSV è il "punto e virgola" non la "virgola".
Excel quindi si aspetta di trovare dei ";" come separatori di campi e, non trovandoli, inserisce tutta la riga in un unico campo.
Calc è più... democratico e ti consente di scegliere il corretto carattere di separazione al momento dell'importazione del documento CSV.

Questo rende le cose ancora più semplici se deciderai di usare il comando PowerShell del mio post precedente (che apparentemente non hai neanche letto? :) ). Infatti, se i tuoi documenti CSV usano la virgola come separatore, il parametro -UseCulture non va bene ed è inutile in quanto la virgola è considerata il separatore "di default" e la riga di comando si semplifica così:

Codice: Seleziona tutto

@(Import-Csv vecchiodb.csv) + @(Import-Csv nuovodb.csv) | Export-Csv unione.csv -NoTypeInformation
Più in generale è anche possibile specificare un qualsiasi carattere come separatore con il parametro -Delimiter 'carattere':

Codice: Seleziona tutto

@(Import-Csv vecchiodb.csv -Delimiter ';') + @(Import-Csv nuovodb.csv -Delimiter ';') | Export-Csv unione.csv -Delimiter ';' -NoTypeInformation
Mentre -UseCulture serve per usare il separatore definito nelle Opzioni Internazionali di Windows (in Italia = ";").
1enry1 ha scritto:mentre in Calc appaiono separati ma sempre TUTTI i gruppi sotto la voce "Standard"...
Questo perché, come dicevo nel mio post precedente, un documento CSV è un semplice file di testo e non contiene informazioni sui formati dei campi. Per cambiare il formato in Calc in fase di importazione, clicca sull'intestazione "Standard" e scegli il formato opportuno.

Ciao, Pippo.

Avatar utente
1enry1
Livello: BD-ROM (6/15)
Livello: BD-ROM (6/15)
Messaggi: 236
Iscritto il: sab nov 02, 2013 3:29 pm

Re: Unire 2 file CSV ...come ?

Messaggio da 1enry1 » lun gen 09, 2017 4:07 pm

ok pippo grazie ma capito poco... quindi come posso unre questi 2 database csv ? grazie

Avatar utente
PippoDJ
Moderatore
Moderatore
Messaggi: 1412
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Unire 2 file CSV ...come ?

Messaggio da PippoDJ » lun gen 09, 2017 6:10 pm

1enry1 ha scritto:ok pippo grazie ma capito poco... quindi come posso unre questi 2 database csv ? grazie
Molto bene, puoi procedere così:
  1. crea una cartella nel desktop e chiamala "unionecsv",
  2. prendi il primo file CSV (quello con tutti i campi), copialo nella cartella appena creata e rinominalo in "vecchiodb.csv",
  3. prendi il secondo file CSV (quello con i campi mancanti), copialo nella cartella creata in precedenza e rinominalo in "nuovodb.csv",
  4. esegui Windows PowerShell e incolla nella sua finestra i seguenti comandi:

    Codice: Seleziona tutto

    cd ([Environment]::GetFolderPath("Desktop") + "\unionecsv")
    @(Import-Csv vecchiodb.csv) + @(Import-Csv nuovodb.csv) | Export-Csv risultatodb.csv -NoTypeInformation
    
Se tutto va bene, dovresti trovare nella cartella un nuovo documento risultatodb.csv che contiene l'unione dei due database.

Avatar utente
1enry1
Livello: BD-ROM (6/15)
Livello: BD-ROM (6/15)
Messaggi: 236
Iscritto il: sab nov 02, 2013 3:29 pm

Re: Unire 2 file CSV ...come ?

Messaggio da 1enry1 » ven gen 13, 2017 11:50 am

grazie mille...ma come eseguo windows power shell ? come si fa ?

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: Unire 2 file CSV ...come ?

Messaggio da System » ven gen 13, 2017 11:50 am


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio