PDA

View Full Version : Da json a CSV.


spider81man
07-02-2022, 10:56
Buongiorno,
ho diversi file .JSON molto pesanti e vorrei convertirli in CSV:
Qualcuno conosce qualche programma per Windows che lo fa? Ho trovato online diversi siti ma, visto la grandezza dei file, me li blocca. Sapete aiutarmi??

x_Master_x
07-02-2022, 11:45
Se hai un Windows recente puoi usare PowerShell (vedi ConvertFrom-Json e ConvertTo-Csv)

Get-Content "C:\Percorso\Input.json" | ConvertFrom-Json | ConvertTo-Csv | Out-File "C:\Percorso\Output.csv"

spider81man
07-02-2022, 13:17
Se hai un Windows recente puoi usare PowerShell (vedi ConvertFrom-Json e ConvertTo-Csv)

Get-Content "C:\Percorso\Input.json" | ConvertFrom-Json | ConvertTo-Csv | Out-File "C:\Percorso\Output.csv"


Grazie per la info,
se lo lancio DIRETTO da cmd mi da questo errore:

"Get-Content" non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.

Come dovrei fare??
Grazie

x_Master_x
08-02-2022, 06:34
Ho detto PowerShell, non CMD. Ribadisco, se hai un Windows recente è preinstallato di default.

spider81man
08-02-2022, 08:16
Ho detto PowerShell, non CMD. Ribadisco, se hai un Windows recente è preinstallato di default.

Ho windows 11 ed ho provato con powershell e mi dice questo

Out-File : Accesso al percorso 'C:\prova.csv' negato.
In riga:1 car:62
+ ... "test.json" | ConvertFrom-Json | ConvertTo-Csv | Out-File "prova.csv"
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

HELP!!!

Styb
08-02-2022, 08:22
Qui vengono presentati dei programmi freeware per la conversione: https://www.ilovefreesoftware.com/08/featured/free-json-to-csv-converter-software-for-windows.html,

e ci sono anche dei siti online che potresti usare, vedi un po' tu, qui: https://www.ilovefreesoftware.com/05/webware/free-online-csv-to-json-converter-websites.html

spider81man
08-02-2022, 08:27
Qui vengono presentati dei programmi freeware per la conversione: https://www.ilovefreesoftware.com/08/featured/free-json-to-csv-converter-software-for-windows.html,

e ci sono anche dei siti online che potresti usare, vedi un po' tu, qui: https://www.ilovefreesoftware.com/05/webware/free-online-csv-to-json-converter-websites.html

Come già detto i siti per convertire, visto che i file sono grandi, non posso usarli.
Il programma che farebbe al caso mio "JsonToCSV" non è più disponibile.

Nicodemo Timoteo Taddeo
08-02-2022, 08:30
Ho windows 11 ed ho provato con powershell e mi dice questo

Out-File : Accesso al percorso 'C:\prova.csv' negato.


In Windows 10 e superiore, non ricordo se andava su 8, con i normali account non puoi creare file direttamente in C:, devi prima creare una directory (cartella) in C: e poi far scrivere il file lì dentro, dentro la cartella.

x_Master_x aveva scritto "C:\Percorso\Output.csv"

spider81man
08-02-2022, 11:50
In Windows 10 e superiore, non ricordo se andava su 8, con i normali account non puoi creare file direttamente in C:, devi prima creare una directory (cartella) in C: e poi far scrivere il file lì dentro, dentro la cartella.

x_Master_x aveva scritto "C:\Percorso\Output.csv"

Perfetto grazie ha fatto tutto!!!
Ora la mia domanda è come posso fare a farlo a CASCATA, lo chiedo poichè ho diversi file da convertire e mi piacerebbe fare in modo che lo lancio e mi converte tutti quelli in una cartella.
Sapete aiutarmi?
Grazie infinite!!!

x_Master_x
09-02-2022, 07:21
Ora la mia domanda è come posso fare a farlo a CASCATA...


$files = Get-ChildItem "C:\Percorso" -Filter *.json
foreach ($f in $files){
$outfile = $f.DirectoryName + $f.Basename + ".csv"
Get-Content $f.FullName | ConvertFrom-Json | ConvertTo-Csv | Out-File $outfile
}


In Windows 10 e superiore, non ricordo se andava su 8, con i normali account non puoi creare file direttamente in C:, devi prima creare una directory (cartella) in C: e poi far scrivere il file lì dentro, dentro la cartella.

Bastava eseguire PowerShell come amministratore, ma è sempre meglio evitare la root

spider81man
09-02-2022, 07:39
$files = Get-ChildItem "C:\Percorso" -Filter *.json
foreach ($f in $files){
$outfile = $f.DirectoryName + $f.Basename + ".csv"
Get-Content $f.FullName | ConvertFrom-Json | ConvertTo-Csv | Out-File $outfile
}




Bastava eseguire PowerShell come amministratore, ma è sempre meglio evitare la root

Grazie per la risposta, ma come salvo questa funzione? Cioè la metto su TXT e poi come la salvo per farla poi eseguire? Poi vorrei cambiare la destinazione visto che il file si trova su un HD esterno vorrei sparare tutto su un HD interno che sta sotto la directory "F"
Grazie

x_Master_x
09-02-2022, 10:12
La copi-incolli direttamente in PowerShell e premi INVIO (come hai fatto per il precedente) oppure su un Blocco Note che salverai con estensione .ps1 (non .txt.ps1, l'icona è diversa) e poi lo esegui.

Se vuoi salvare il file generato in un percorso diverso cambia questa stringa:

$outfile = "C:\Percorso\Output\" + $f.Basename + ".csv"

Vedi bene le slash.

spider81man
09-02-2022, 11:17
La copi-incolli direttamente in PowerShell e premi INVIO (come hai fatto per il precedente) oppure su un Blocco Note che salverai con estensione .ps1 (non .txt.ps1, l'icona è diversa) e poi lo esegui.

Se vuoi salvare il file generato in un percorso diverso cambia questa stringa:

$outfile = "C:\Percorso\Output\" + $f.Basename + ".csv"

Vedi bene le slash.

Grazie infinite sta funzionando, ho aggiunto solo questa riga prima della fine del ciclo

write-host $outfile

in modo che so a che punto sta.
Grazie