Importare csv di grandi dimensioni in MariaDb/mysql

Ci sono parecchi modi per importare dei dati in formato csv in una tabella mysql/MariaDb con vari wizards piu’ o meno semplici, ma se si deve importare un file di qualche giga nascono problemi di timeout e diventa tutto piu’ complicato. Con questo metodo si carica tutto velocemente, gli unici vincoli sono che bisogna avere un accesso ssh al database e bisogna avere la struttura della tabella gia’ esistente nel database. Se abbiamo questi prerequisiti procediamo cosi:

Aprire una sessione ssh sul database con il comando:

mysql -u <user> -p <NomeDatabase> -h <IP_DataBase>

Dalla console del database digitare:

LOAD DATA LOCAL INFILE <‘Percorso_del_csv’> IGNORE INTO TABLE <NomeTabella> FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’;

In pochi minuti la tabella verra’ popolata con i dati del csv locale.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

VBA/excel macro per leggere un file csv

Creare una macro e inserire questo codice:

Dim FileDaLeggere As String
Dim riga As String

FileDaLeggere = “C:\temp\ciao.csv”

On Error Resume Next

Range(“A1”).Activate
row_number = 0
Open FileDaLeggere For Input As #1

Do Until EOF(1)
Line Input #1, riga
campi = Split(riga, “,”)
ActiveCell.Offset(row_number, 0).Value = Replace(campi(0), Chr(34), “”)
ActiveCell.Offset(row_number, 1).Value = Replace(campi(1), Chr(34), “”)
ActiveCell.Offset(row_number, 2).Value = Replace(campi(2), Chr(34), “”)
row_number = row_number + 1
Loop

Close #1

Sostituire FileDaLeggere con il file effettivo e campi(0) , campi(1) etc con il numero della colonna interessata.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

VBA/excel macro per scrivere un file csv

Creare una nuova macro e inserire questo codice:

Dim FileDaScrivere As String
Dim campo As String
Dim rng As Range
Dim riga As Integer

FileDaScrivere = “C:\temp\ciao.csv”
Open FileDaScrivere For Output As #1

For riga = 1 To 10
campo = ActiveSheet.Range(“A” & riga)
Write #1, campo,
campo = ActiveSheet.Range(“B” & riga)
Write #1, campo,
campo = ActiveSheet.Range(“C” & riga)
Write #1, campo,
campo = ActiveSheet.Range(“D” & riga)
Write #1, campo
Next riga

Close #1

Cambiare il percorso di output e le colonne da scrivere (FileDaScrivere e ActiveSheet.Range).

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Utilizzo i cookie per essere sicuro che tu possa avere la migliore esperienza sul mio sito. Se continui ad utilizzare questo sito assumo che tu ne sia felice.. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi