Buongiorno a tutti,
devo creare un file csv con i dati estratti da un db sqlite. Come devo fare senza usare componenti esterne a pagamento?
C’ un metodo pi rapido che scrivere una riga di testo es. : “capo1”+";“campo2”+"," ecc. per ogni record db letto?
Grazie
nel file cdv devi rispettare i seguenti limiti:
campi numerici devono essere scritti come sono (con la formattazione da codice ovvero con il . come separatore decimale e senza gruppi di migliaia
campi testuali raggruppati tra " per cui devi sostituire eventuali " con “”
per ogni record (riga) raccogli i dati come vettore di stringhe e poi scrivi (writeLine) la riga con il join del vettore unendo con il carattere ,
Questo pi veloce e meno oneroso che concatenare le stringhe tra di loro o scrivere un campo alla volta
Quante colonne per record ?
Quante record per .sqlite file ?
Nessun problema con tesi di velocità.
Aggiungo separatori ( “,”) da parte come + " all’inizio e alla fine di ogni riga.
La velocità è tale che non v’è nessuna attesa.
SQLIte Data Base:
12 Rows / 1 800 Records.
Solo la parte di DB / scrittura.
I dati dal mio db non contiennet di " in campo.
(Testato al momento della scrittura nei fumetti).
[code] Dim Loop_Idx As Integer
Dim Record_Del As String
Dim Record_Cnt As Integer
// Typing saver
Record_Del = Chr(34) + “,” + Chr(34)
// Get the Record Count
Record_Cnt = Source_RS.FieldCount
// b. Loop thru the source Caritas TABLE
While Not Source_RS.EOF
Try
// Write the leadig quote
Target_TOS.Write Chr(34)
// Get / Write the current Record contents
For Loop_Idx = 1 To Record_Cnt
// Faster export
Target_TOS.Write Source_RS.IdxField(Loop_Idx).StringValue + Record_Del
// TO avoid 1, Infinite Loop
If UserCancelled Then Exit
Next
// Write the ending quote + EndOfLine
Target_TOS.WriteLine Chr(34)
Catch e As IOException
// handle
End Try
// Move to the next Record to read / write
Source_RS.MoveNext
// TO avoid 1, Infinite Loop
If UserCancelled Then Exit
Wend[/code]