Miglior linguaggio per analizzare file Excel 2007 estremamente grandi

Il mio capo ha l’abitudine di eseguire query sui nostri database che restituiscono decine di migliaia di righe e salvandole in file Excel. Io, essendo lo stagista, devo costantemente scrivere script che funzionano con le informazioni di questi file. Finora ho provato VBScript e Powershell per le mie esigenze di scripting. Entrambi possono richiedere diversi minuti per eseguire anche le operazioni più semplici, il che significherebbe che lo script al termine richiederebbe la maggior parte di una giornata di 8 ore.

In questo momento, la mia soluzione è semplicemente scrivere uno script PowerShell che rimuova tutte le virgole e i caratteri di nuova riga da un file xlsx, salva i file .xlsx in .csv e poi fa in modo che un programma Java gestisca la raccolta e l’output dei dati e abbia il mio script ripulire i file .csv al termine. Funziona in pochi secondi per il mio progetto attuale, ma non posso fare a meno di chiedermi se c’è un’alternativa più elegante per il mio prossimo. Eventuali suggerimenti?

Il tuo objective è fare “trasformazione dei dati” sui tuoi file Excel.

Per risolvere questo, vorrei utilizzare uno strumento ETL dedicato (Extract Transform Load), come Talend Open Studio .

Devi solo inserire un componente “Excel Input”, un componente “data transform” e un “componente di output CSV”. Talend ETL convertirà questa descrizione funzionale del tuo problema in un codice Java. Infine, devi solo eseguire questo programma …

Personalmente userei Python per questo. Ho trovato che corre abbastanza veloce da non essere un problema evidente.

Se non vuoi preoccuparti di una nuova lingua, perché non usare semplicemente Java per l’intera faccenda? Rimozione di virgole e newline è piuttosto banale in Java e ti farebbe risparmiare un passo.

Dovresti sempre pensare al futuro del tuo codice …

Chi manterrà la tua sceneggiatura in futuro? La tua azienda ha altri sviluppatori che hanno familiarità con PowerShell / VBScript?

Devo dire che dovresti attenersi a una lingua che si adatta alle tue esigenze (e alla tua azienda). Come suggerito da Nathan, Python sarebbe un’ottima scelta per la creazione di script veloci.

E ancora una cosa: se riesci a controllare le istruzioni SQL del tuo capo, puoi fargli creare degli output che facilitino lo sviluppo dei tuoi parser e li rendano molto più semplici.

In bocca al lupo!

Tal.

oltre alla risposta di trashgod, per file di grandi dimensioni, suggerirei POI SXSSF (dal POI 3.8 beta3). ( http://poi.apache.org/spreadsheet/ ) Con SXSSF, è ansible gestire file di grandi dimensioni nei flussi e ciò contribuirà ad evitare errori di memoria.

aggiungendo il link ai dettagli SXSSF: http://poi.apache.org/spreadsheet/how-to.html#sxssf

È ansible utilizzare Java POI per accedere direttamente a .xlsx.

Se si salva il file come CSV , è ansible utilizzare qualsiasi lingua che si desidera analizzare.

È ansible importare i dati in un database incorporato, ad esempio apache derby (o http://hsqldb.org/ ). A seconda della natura delle tue query, può essere un po ‘più veloce. Di certo, risparmierà molto tempo se il tuo capo richiede spesso nuove funzionalità. Scriverà semplicemente la maggior parte delle tue nuove funzionalità in SQL.

Se hai bisogno di un’analisi ADVANCE – oltre a raggruppare, unirti, filtrare -, vai su strumenti di mining gratuiti, come Wekka *, Rapid Miner (basato su Wekka ma una GUI migliore) o knime . Questi strumenti hanno interfacce molto belle e forniscono agli operatori la lettura dei file cvs. Puoi anche eseguire librerie rapidminer e wekka all’interno del tuo programma java. In caso contrario, andare per il database incorporato come ho proposto prima.

L’utilizzo di POI di Apache non è una ctriggers idea, ma personalmente – preferisco usarlo solo per leggere Excel prima di caricarlo, ad esempio, in un database.

Per quanto riguarda la lingua. Il miglior linguaggio che ho trovato per le attività ad hoc è fantastico . È un linguaggio di scripting nella parte superiore di Java, quindi puoi usare tutte le librerie Java (POI, jdbcs, … un elenco molto lento) e mescolare le classi groovy con le classi Java.

Ho due opzioni per l’analisi dei file excel (.xlsx o xls). 1-È ansible utilizzare apache POI apache per estrarre i dati da esso.Ora Apache poi è migliorata e veloce.

2- Convertire Excel per aprire xml quindi scrivere un file xslt. Penso che dovrebbe funzionare per un file di Excel file lungo.