Import DBF dans un ODB au format HSQLDB

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
pilotc
Fraîchement OOthentifié
Messages : 5
Inscription : 26 août 2020 14:09

Import DBF dans un ODB au format HSQLDB

Message par pilotc »


La modération vous a écrit: Titre modifié : "base de données" est implicite

Bonjour,

Pour commencer : je débute totalement sur Base, et dispose de peu de connaissances Sql :wink:

Je dispose de fichiers dbf très volumineux téléchargés depuis le site de l'INSEE au format dbf (https://www.insee.fr/fr/statistiques/4309443?sommaire=3973005&q=stock+entreprise+2018). Ces fichiers dépassent largement la limite d'Excel / Calc en nombre de ligne, je ne peux les ouvrir qu'avec Access (dont je ne dispose pas) ou Base.

J'ai besoin d'executer la requête suivante : SELECT "REGION", "TAILLE", COUNT( * ), SUM( "FREQ" ) FROM "table" GROUP BY "REGION", "TAILLE", afin de compter le nombre d'entreprise par taille et par région. Cette requête fonctionne sur un échantillon test :super: mais qui exige que je sois dans une base de données hsqlbd.

Ce que je fais :
- fichier / nouveau / base de données / créer une nouvelle base de données intégrée
- en parallèle fichier / nouveau / base de données / connecter une base de données existante. Choix format dbf --> j'ai accès à mes données source

Je tente un copier-coller depuis mes données sources vers la base de données hsqlbd (choix de tous les champs + clé primaire) : message d'erreur systématique :fou:
Statut SQL: 22001
Code d'erreur: -124

Value too long in statement [INSERT INTO "stets_2018" ( "ID","REG","DEP","ZE","AU","UU","COM","APE","A64","A38","A21","A10","TAILLE","CJ1","CJ2","ARTISAN","FREQ") VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]

Sachant que les formats des champs sont corrects.

Est-ce bien la seule méthode pour repondre à mon besoin ou y a t'il un autre moyen d'intégrer des fichiers dbf dans une base hsqldb ?

Merci d'avance de votre aide !
LibreOffice 5.4.7.2.M6 (*64) Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: import dbf dans base de données hsqlbd

Message par jeanmimi »

Bonjour,
pilotc a écrit :Value too long in statement
Le message signifie que des données insérées das les champs de la Base HSQLDB sont plus longs que la longueur des champs définis dans la Table qui doit les accueillir, par défaut 100 caractères, et qu'il vaut mieux passer à 500 quitte ensuite à les réduire si nécessaire.
Quant à la requête, son code SQL est conforme.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
pilotc
Fraîchement OOthentifié
Messages : 5
Inscription : 26 août 2020 14:09

Re: import dbf dans base de données hsqlbd

Message par pilotc »

Bonsoir, merci, je vais regarder comment faire cette manip.
J'ai traité en utilisant mon access personnel en moins de 3 minutes, mais j'ai besoin de définir la méthodologie avec les outils professionnels open office, donc je vais poursuivre mes tests.
LibreOffice 5.4.7.2.M6 (*64) Windows 10
pilotc
Fraîchement OOthentifié
Messages : 5
Inscription : 26 août 2020 14:09

Re: import dbf dans base de données hsqlbd

Message par pilotc »

Bonjour,

Après vérification, aucune de mes données ne dépasse les 6 caractères, donc l'erreur ne vient pas de là.
Je continue de chercher.

Bonne journée
LibreOffice 5.4.7.2.M6 (*64) Windows 10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: import dbf dans base de données hsqlbd

Message par jeanmi2403 »

Bonjour,
Si tu m'explique comment récupérer les fichiers en question, je veux bien m'intéresser au sujet en question.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: import dbf dans base de données hsqlbd

Message par Dude »

Salut,
pilotc a écrit :Après vérification, aucune de mes données ne dépasse les 6 caractères, donc l'erreur ne vient pas de là.
Bien sûr que si. L'erreur d'insertion SQL vient du fait qu'une de tes colonnes est mal typé.
Si j'ouvre le DBF puis en fait la copie dans un ODB au format natif HSQL, l'assistant va se bloquer avec le message d'erreur.
Il suffit de dire "Non" pour arrêter le processus et voir à quelle ligne, il s'est arrêté.
pilotc
Fraîchement OOthentifié
Messages : 5
Inscription : 26 août 2020 14:09

Re: import dbf dans base de données hsqlbd

Message par pilotc »

Bonjour,

Le fichier est à récupérer ici : https://www.insee.fr/fr/statistiques/43 ... prise+2018, à la ligne Fichier Stocks d'unités légales au 31 décembre 2018 télécharger le zip version dbase qui pèse 10Mo puis le dézipper. Prendre alors le fichier nommé stent_2018.dbf.

Je vais tester à nouveau la longueur des champs mais pour info je ne créé pas de table dans la hsql, c'est lors du copier-coller que Base détecte tout seul la longueur des champs que je souhaite coller.

Bonne journée à tous
LibreOffice 5.4.7.2.M6 (*64) Windows 10
pilotc
Fraîchement OOthentifié
Messages : 5
Inscription : 26 août 2020 14:09

Re: import dbf dans base de données hsqlbd

Message par pilotc »

Merci, effectivement, j'avais une valeur plus grande que les autres, ce qui bloquait sur une ligne précise. J'ai modifié la longueur mais j'ai un nouveau message d'erreur, sans possibilité d'ouvrir la table cette fois-ci :
Statut SQL: S1000
Code d'erreur: 40
S1000 General error java.lang.NullPointerException in statement [SELECT * FROM "stent_2018"]
Dernière modification par micmac le 31 août 2020 10:33, modifié 1 fois.
Raison : Message mis entre balise [quote]
LibreOffice 5.4.7.2.M6 (*64) Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: import dbf dans base de données hsqlbd

Message par Dude »

Sans doute un problème de mémoire, quelle est la taille du DBF ?
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: import dbf dans base de données hsqlbd

Message par jeanmimi »

pilotc a écrit :effectivement, j'avais une valeur plus grande que les autres,
Afin de faciliter les tests, quel est le champ concerné ?
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox