Voglio creare un file CSV usando Perl e scrivere alcuni dati su di esso. C'è un modo per farlo?Come posso creare un file CSV usando Perl?
risposta
È possibile utilizzare Class:CSV.
use Class::CSV;
my $csv = Class::CSV->new(
fields => [qw/userid username/]
);
$csv->add_line([2063, 'testuser']);
$csv->add_line({
userid => 2064,
username => 'testuser2'
});
$csv->print();
# 2063,testuser
# 2064,testuser2
Edit: Per più librerie, è possibile search CPAN.
Usiamo solitamente Text::CSV_XS
(che la suddetta Class::CSV
si basa su)
UPDATE: Commenters sotto suggeriscono anche usando Text::CSV
che caricherà fino Text::CSV_XS
o, se questo non è avialable, ripiegare su Text::CSV_PP
che non ha la dipendenza da XS
e potrebbe essere più facile da installare.
C'è più di un modo per farlo.
- DBD::CSV - Utilizzare SQL per leggere e scrivere file CSV.
- Text::CSV - Genera e analizza i file CSV una riga alla volta. Questo è praticamente il - gold standard per la manipolazione CSV.
- POE::Filter::CSV - Fornisce un filtro CSV per l'IO componente POE.
- Data::Tabular::Dumper::CSV - Scarica una tabella direttamente in un file CSV (gli oggetti con la stessa interfaccia possono eseguire il dump su file XML o MS Excel).
Ci sono molti altri su CPAN, anche.
Naturalmente, si poteva ignorare tutto questo e basta usare un ciclo, un join e una stampa:
my @table = (
[ 'a', 'b', 'c'],
[ 1, 2, 3 ],
[ 2, 4, 6 ],
);
for my $row (@table) {
print join(',', @$row), "\n";
}
Basta eseguire lo script e reindirizzare output in un file, bang! hai fatto. Oppure potresti impazzire e open un handle di file e stampare direttamente su un file.
Ma in questo caso non si gestiranno campi su più righe, o virgolette incorporate o una delle tante altre stranezze che possono apparire in questo tipo di attività di elaborazione dati. Quindi stai attento con questo approccio.
Le mie raccomandazioni:
- Se si sta costruendo un'applicazione POE , utilizzano POE :: filtro.
- Se sei un mostro SQL/DBI e sogna in SQL, o potrebbe essere necessario sostituire l'output CSV con una connessione reale al database , utilizzare DBD :: SQL.
- Se hai dati semplici e stanno improvvisando un piccolo script cruddy getta nel formato alcuni dati per il foglio di calcolo da digerire, uso di stampa e unirsi - fare questo per nessun codice con una durata prevista di superiore a 2 ore.
- Se si si desidera scaricare un blob di dati in un uso CSV o XML Dati :: Tabulare :: Dumper :: CSV.
- Se si sta scrivendo qualcosa che deve essere stabile, gestibile e veloce, e occorre il massimo controllo per input e output, utilizzare Text :: CSV. (Nota che POE :: Filtro :: CSV, Dati :: Tabulare :: Dumper :: CSV e DBD :: CSV utilizzano tutti Testo :: CSV o Testo :: CSV_XS come per l'elaborazione back-end).
- 1. Come posso controllare l'estensione di un file usando Perl?
- 2. Come posso creare un file binario in Perl?
- 3. Perl CSV to hash
- 4. Creare un file .csv in C#
- 5. Creare dinamicamente un file CSV con FileHelpers
- 6. Come posso creare un file PST di Outlook usando .Net?
- 7. Leggere un file CSV usando Python 3
- 8. Come posso creare un archivio Zip in Perl?
- 9. come importare un file csv in mysql usando node.js?
- 10. Come posso creare un database usando pymssql
- 11. Come posso convertire il mio JSON in CSV usando jq?
- 12. Come posso estrarre i campi da un file CSV in Perl?
- 13. come posso creare un eseguibile standalone con perl 6?
- 14. Come creare un file CSV da Core Data (swift)
- 15. Come posso creare una classe Perl?
- 16. Come creare un file usando Makefile
- 17. Come posso monitorare un file in modo asincrono in Perl?
- 18. Come creare un file csv dalla variabile stringa usando streamwriter in Vb.Net?
- 19. Come si controlla se un file è aperto usando Perl?
- 20. Leggere un file CSV e creare un altro file CSV utilizzando PHP
- 21. Come creare un file CSV separato da VBA?
- 22. Come posso dividere un file CSV in PHP?
- 23. Come posso importare un file CSV tramite un'attività rake?
- 24. Come posso analizzare un file di intestazione C con Perl?
- 25. Come posso creare un nuovo riferimento hash vuoto in Perl?
- 26. Come posso creare un qr // in Perl 5.12 da C?
- 27. Come posso verificare se un file esiste su un server remoto usando Perl?
- 28. Come posso estrarre un nome file da un percorso usando Perl?
- 29. Come posso aprire un file Unicode con Perl?
- 30. Come posso creare un eseguibile autoinstallante usando WinRAR?
Questa è l'opzione migliore. Testo :: CSV_XS è altamente ottimizzato e ricco di funzionalità con un'API fluida. Lo usiamo dappertutto. L'autore è anche nei miei occhi il più reattivo su tutto il CPAN, è orgoglioso del modulo e fornisce un supporto di prima qualità. Text :: CSV_PP è anche un grande fallback se non puoi compilare per _XS, ottimo se ne hai bisogno in seguito. La cosa giusta accadrà proprio in questi giorni se usi semplicemente Testo :: CSV –
Concordato con quell'ultima frase: usa solo Testo :: CSV e caricherà Text :: CSV_XS se è disponibile o riporterà a Testo :: CSV_PP se il sistema non ha la versione XS installata. –
@szabgab Puoi fornire un esempio di creazione di un CSV con Text :: CSV nella tua risposta? Sto leggendo la documentazione e sembra estremamente concentrato sull'analisi del CSV, non molto chiaro su come crearne uno. –