j'ai déjà testé le TJvCsvDataSet
et il plante, car trop de ceci ou de celà..
@+
Effectivement, je n'ai pas la dernière version du composant (et sourceforge est en carafe) mais il consomme énormément de mémoire. J'ai testé sur une fichier texte d'un million de lignes (environ 12 Mo seulement) et il m'a gentiment fait un "Out of memory". L'application est monté a plus d'un Go puis est descendu à 100Mo pour remonter lentement vers les 400Mo et me lacher le message...
Oui, dommage que le TJvCsvDataSet plante car c'était le plus aboutit.
peut-être y a t-il un moyen de modifier ce composant afin de lui faire déborder ses limites ?
le TdxMemData, quant à lui, fonctionne à l'envers de ce que je souhaite faire.
En effet, il faut d'abord créer les colonnes et ensuite faire un load des données m'obligeant donc
à détecter, dans un premier le nombre et le nom des champs, puis avec une procédure les créer dans le TdxMemData
et enfin, importer les données avec un load, mais bien sûr sans la première ligne des champs !
ce qui au final, n'est pas très pratique.
et à propos de la classe TMemoryDataSet, le lien de téléchargement ne fonctionne plus..
Si on résume, il ne me reste plus grand chose à part créer des tables.
A ce propos, comme, j'ai une quinzaine de fichiers, ce qui est peu, mais en revanche, cela représente beaucoup de champs
plusieurs centaines environ, et cela me dérange de me coltiner leurs créations dans Firebird.
je peux bien sûr créer un SQL, mais le top aurait été de faire un datapump qui créer automatiquement les champs et les données dans Firebird
comme le fait ACCESS.
il y en a un EMS DataPump mais payant
?
De toute façon dxmemdata ne peut pas lire directement un fichier csv il faut le lire toi et le mettre au format accepté par dxmemdata oubien alimenter le dxmemdata directement par des .insert ou .insertrecord.
Pour le TJvCsvDataSet les sources sont disponibles, a voir les problèmes de licence.
Mais pour lui aussi il faut définir les champs.
Si tu n'as qu'une quinzaine de type de fichier pour une centaine de champs ce n'est pas la mort non plus.
L’inconvénient de créer dynamiquement tes tables / colonnes c'est qu'apres il te faudra un requeteur dynamique pour consulter etc
Il existe aussi une solution avec les drivers ODBC.
Il existe des drivers ODBC pour fichier texte csv
C'est peut être une piste à explorer.
si, si il les détectent..mais plante car trop de machin..Pour le TJvCsvDataSet les sources sont disponibles, a voir les problèmes de licence.
Mais pour lui aussi il faut définir les champs.
oui, une fois les tables et champs crées, le boulot n'est pas terminé..L’inconvénient de créer dynamiquement tes tables / colonnes c'est qu'apres il te faudra un requeteur dynamique pour consulter etc
il reste les clés, les index , les liens, les triggers, les generators etc..
mais pour ma part, ça m'enlève quand même une belle épine du pied.
j'ai trouvé un XMLWizard d'allure assez sympa..mais chatouilleux sur la nature des données..
et je vais tester les drivers ODBC.
sinon, je vais développer une appli qui détecte les colonnes, et crée dynamiquement les tables.
je te remercie pour cette discussion qui a bien fait avancer les choses.
je mets résolu
@bientôt
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager