$csv.nextRecord
¶
Description¶
Retourne l'enregistrement suivant lu du CSV donné en référence.
Les méthodes $csv.parse
et
$csv.nextRecord
permettent toutes les deux de
parcourir un CSV et d'effectuer un traitement pour chaque enregistrement.
Les deux méthodes varient quant à l'approche pour réaliser le
traitement.
Le choix de l'approche appartient donc au développeur, d'autant que les performances des deux méthodes sont sensiblement identiques.
Syntaxe¶
$csv.nextRecord( referenceCsv )
Paramètres¶
referenceCsv
pojo- Référence de CSV obtenue à l'aide de
$csv.load
Retour¶
Retourne un tableau contenant les valeurs du record, ou null
si le parser
a atteint la fin du fichier.
Exemple¶
L'exemple ci-dessous est un code complet effectuant l'importation des données "entrées" du registre fédéral des bâtiments et des logements.
L'idée est de parser le CSV en itérant sur les enregistrements (c.-à-d. les lignes du CSV) et d'envoyer les données dans une table par lots. Pour ce faire, on construit une requête de la forme:
insert into (col1, col2, ...) values('valA1', 'valB1', ...),('valA2', 'valB2', ...)
Le nombre de lignes enregistrées à la fois est déterminé par la constante
maxCounter
. Cette variable joue un grand rôle sur les performances car
elle influe sur le nombre de requêtes envoyées à la base de données. Elle
est fixée à 250 dans l'exemple ci-dessous. Lors des tests, cela a permis
d'importer un peu plus de 15'000 enregistrement à la seconde. Dans les mêmes
conditions, une valeur de 500 permet d'importer environ 18'000
enregistrement par seconde.
La solution proposée ci-dessous n'est toutefois pas optimale. Une importation par batch serait plus adapté à ce type de traitement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
|
Voir également l'exemple de la méthode $csv.parse
qui réalise
le même traitement, mais de façon différente.