Page 1 sur 1

[Résolu] Access vers Base : importation texte long

Publié : 14 juin 2007 07:10
par Denis_AeC
Bonjour,

Je souhaite passer une base Acces vers OOo BAse sous Linux / Ubuntu ou Win XP. Mon problème vient d'un champ Texte de longueur supérieure à 255 car. (et en plus, avec des sauts de ligne à l'intérieur des cellules)

En copiant/collant la table (exportée en csv, importée en Calc) dans Base, le contenu de la colonne correspondant à ce texte est vide si je choisis LongText (65536) , ou tronqué si je reste en Text (255), ou pire la ligne est carrément supprimée en Text (255) -selon les méthodes d'import et choix de type de champ. Les autres champs sont bien importés.

J'ai essayé plusieurs autres méthodes, y compris en OOo Base sur une base MySql ou en bricolant avec Kexi, mais pour l'instant sans succès.

J'ai 520 enregistrements ... plus de 200 dépassent les 255 car. pour ce champ, et je n'ai pas envie de re-rentrer mes commentaires ou de reformater avec les sauts de ligne.

Comment donc importer une table avec champ texte > 255 car ?
ou
Comment ajouter juste le contenu de cette colonne dans une table existante, à partir d'un csv contenant un n° de ligne et le champ (longueur >255 car et sauts de lignes dans une même cellule) ?

Merci pour vos idées ! :D

Publié : 14 juin 2007 10:35
par Tom Pouce
Salut,

Tu as un tuto qui parle de la conversion Access -> Base
http://www.forum-openoffice.org/?tuto#61

Publié : 14 juin 2007 10:41
par Denis_AeC
Merci mais désolé, je connais et il ne répond pas à mon problème bien spécifique. J'ai déjà cherché sur ce forum et sur le forum US.

L'import de table se fait bien, sauf pour un champ qui n'est pas bien traité.

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 10:49
par Dude
Denis_AeC a écrit :En copiant/collant la table (exportée en csv, importée en Calc) dans Base, le contenu de la colonne correspondant à ce texte est vide si je choisis LongText (65536) , ou tronqué si je reste en Text (255)
Oui c'est normal car une cellule de tableur est limitée à 255 caractères. Il vaut mieux tout faire dans Base.

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 11:36
par Denis_AeC
Dude a écrit :
Denis_AeC a écrit :En copiant/collant la table (exportée en csv, importée en Calc) dans Base, le contenu de la colonne correspondant à ce texte est vide si je choisis LongText (65536) , ou tronqué si je reste en Text (255)
Oui c'est normal car une cellule de tableur est limitée à 255 caractères. Il vaut mieux tout faire dans Base.
Et non, sous Calc, mes cellules sont complètes et bien importées du csv. D'ailleurs la fonction NBCAR me donne des résultats cohérents et parfois bien largement au-dessus de 255. :D

J'ai réessayé ce matin et le problème est qu'au copier (de Calc) / coller (dans Base), soit la colonne est vide (LONGTEXT : 2M car) soit la ligne est supprimée (TEXT : 255) (mais l'ID est incrémenté, comme si la ligne avait été "créée" puis "supprimée"). J'ai eu aussi un tronquage à 255 mais j'ai perdu la méthode.

Comment "tout faire dans Base" ?

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 12:42
par Dude
Denis_AeC a écrit :Et non, sous Calc, mes cellules sont complètes et bien importées du csv. D'ailleurs la fonction NBCAR me donne des résultats cohérents et parfois bien largement au-dessus de 255.
Effectivement, l'aide précise que la chaîne ne peut être d'une taille supérieure à 64 Ko.

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 13:06
par Dude
Denis_AeC a écrit :Comment "tout faire dans Base" ?
Tu ouvres ton MDB
Tu crées un ODB
Tu glisses la table d'un fichier à l'autre

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 15:11
par Denis_AeC
Dude a écrit :
Denis_AeC a écrit :Comment "tout faire dans Base" ?
Tu ouvres ton MDB
Tu crées un ODB
Tu glisses la table d'un fichier à l'autre

Euhhhhhh traduction MDB / ODB = MS - OOo ? :?

Je copie d'Access dans Base ? Directement ? Et ça marcherait ?

Bon, je viens d'essayer ... copie de la table dans Access, coller dans Base, modification des types de champs (Base met tout en texte 255) et Go ...
Même résultat que via import csv / Calc : le champ commentaire en Memo est vide :( mais "en plus", j'ai deux colonnes numériques qui sont également vides ...

Il est où le gag ? :cry:


Tiens, je vais essayer un autre truc : accéder à la base Access par Base, et ouvrir une seconde Base puis copier / coller de l'une à l'autre ... C'est parti !

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 15:29
par Dude
Denis_AeC a écrit :Euhhhhhh traduction MDB / ODB = MS - OOo ? :?
MDB = extension des fichiers MS-Access
ODB = extension des fichiers OpenOffice Base
Denis_AeC a écrit :Tiens, je vais essayer un autre truc : accéder à la base Access par Base, et ouvrir une seconde Base puis copier / coller de l'une à l'autre ... C'est parti !
Oui c'est cette procédure qu'il faut exécuter : tout faire dans Base.

Re: Access vers Base : importation texte long

Publié : 14 juin 2007 18:03
par Denis_AeC
Dude a écrit :
Denis_AeC a écrit :Euhhhhhh traduction MDB / ODB = MS - OOo ? :?
MDB = extension des fichiers MS-Access
ODB = extension des fichiers OpenOffice Base
Denis_AeC a écrit :Tiens, je vais essayer un autre truc : accéder à la base Access par Base, et ouvrir une seconde Base puis copier / coller de l'une à l'autre ... C'est parti !
Oui c'est cette procédure qu'il faut exécuter : tout faire dans Base.
Oups, j'avais pas vu .mdb et .odb ...

Coté import Access via Base et import dans une autre base : pas top ... erreur à l'import ... Je n'ai que la structure de la table, aucune donnée n'a été importée.

Ca, c'était sous XP. Je retente sous Ubuntu, des fois que ...

Publié : 14 juin 2007 19:12
par Denis_AeC
Bon, sous Ubuntu, c'est pire ... pas de copier / coller sur ma table. Ca marche sur une petite table, mais j'ai des problèmes avec les caractères acentués. Sur la "grosse" table, rien ne se passe après le "coller".

Le passage sous OOo Base sera pour une autre version ...

Publié : 15 juin 2007 07:17
par Dude
Je n'ai pas le problème de conversion que tu décris. Te serait-il possible de mettre en ligne ton fichier MDB ?

Publié : 15 juin 2007 07:44
par Denis_AeC
Dude a écrit :Je n'ai pas le problème de conversion que tu décris. Te serait-il possible de mettre en ligne ton fichier MDB ?
C'est là :
http://user.services.openoffice.org/fr/ ... 094024.mdb

PS : pas mal du tout ce service ci-joint !

Attention, j'ai viré les formulaires, états et des tables "inutilisées" pour rester dans les 500 ko.
Le problème est avec la table carnet de vol mais aussi avec voile. Les deux autres ne posent pas de problème.

Dis moi si ça marche chez toi ...

J'ai regardé sur les forums US mais n'ai pas trouvé de post à ce sujet (peut-être pas trouvé les bons mots !).

Publié : 15 juin 2007 09:17
par Dude
On va dire qu'il y a des problèmes de reconnaissance de certains types dans un MDB mais une fois corrigé cela passe.

Je viens de faire le test pour la table Voile.

Les champs "Commentaire" et "Rapport de révision xx" sont vus avec le type SQL Null[]. Lors de l'exportation, le type est défini en tant que VARCHAR avec une valeur à zéro. Il faut tous les redéfinir en tant que MEMO.
Image

Le champ "Voile perso" est de type Oui/Non [Bit] et vu à l'export en tant que VARCHAR de longueur 2. Il faut le redéfinir en tant que BOOLEAN.
Image

Une fois fait, la conversion s'effectue.

8)

Publié : 15 juin 2007 09:22
par Dude
J'ajouterai qu'il y a des erreurs de conception.

La clé primaire est définie sur une chaîne "modèle de voile'.
Pourquoi ces multiples champs "Rapport de révision" ? Il aurait été plus simple d'avoir une table à part avec une relation 0,n

Publié : 15 juin 2007 11:34
par Denis_AeC
Dude a écrit :J'ajouterai qu'il y a des erreurs de conception.

La clé primaire est définie sur une chaîne "modèle de voile'.
Pourquoi ces multiples champs "Rapport de révision" ? Il aurait été plus simple d'avoir une table à part avec une relation 0,n
C'est une récup d'une base existante ... et je n'utilise que peu de fonction, donc je n'ai jamais fait l'effort de purger ce dont je n'avais pas besoin :wink:

J'ai d'ailleurs supprimé plusieurs tables non utilisées dans ce que j'ai envoyé ...

Je comptais aussi mettre tout ça au propre lors du transfert en Base : import des seules tables utilisées et nettoyage de tous les champs sans intérêt ... pour en ajouter de nouveau.

Publié : 15 juin 2007 11:39
par Denis_AeC
Dude a écrit :On va dire qu'il y a des problèmes de reconnaissance de certains types dans un MDB mais une fois corrigé cela passe.

Je viens de faire le test pour la table Voile.

Les champs "Commentaire" et "Rapport de révision xx" sont vus avec le type SQL Null[]. Lors de l'exportation, le type est défini en tant que VARCHAR avec une valeur à zéro. Il faut tous les redéfinir en tant que MEMO.

Le champ "Voile perso" est de type Oui/Non [Bit] et vu à l'export en tant que VARCHAR de longueur 2. Il faut le redéfinir en tant que BOOLEAN.

Une fois fait, la conversion s'effectue.
C'est ce que je fais aussi mais la conversion ne s'effectue pas ... pour les Commentaires. Pour Voile perso, les dates, les entiers et les textes courts c'est OK, mais pas Memo ! :(

Mais la "reconnaissance" est bizarre puisque certains champs sont bien vus alors que d'autres non, et ça varie aussi delon le type d'import ...

Essai sous XP ou Ubuntu, import direct d'Access ou via csv+Calc ou via Base connecté sur Access.

Publié : 15 juin 2007 12:18
par Dude
Denis_AeC a écrit :C'est ce que je fais aussi mais la conversion ne s'effectue pas ... pour les Commentaires.
J'ai fait une rapide conversion :
http://user.services.openoffice.org/fr/ ... 021613.odb

Publié : 15 juin 2007 13:57
par Denis_AeC
Dude a écrit :J'ai fait une rapide conversion :
http://user.services.openoffice.org/fr/ ... 021613.odb
C'est un scandale ! Ca marche ! :roll:

Bon, c'est quoi ta recette ? :?:

Publié : 15 juin 2007 14:19
par Dude
Denis_AeC a écrit :C'est un scandale ! Ca marche ! :roll:

Bon, c'est quoi ta recette ? :?:
Je suis à jour.
OOo.2 sur Ubuntu et XP
C'est quoi ta version exactement ? Parce que si tu es en 2.0, tu viens de (nous) faire perdre du temps.

:?

Publié : 15 juin 2007 14:26
par Denis_AeC
Dude a écrit : Je suis à jour.
OOo.2 sur Ubuntu et XP
C'est quoi ta version exactement ? Parce que si tu es en 2.0, tu viens de (nous) faire perdre du temps.

:?
Moi aussi : 2.2 sous XP. Sous Ubuntu, je verrai ce soir.

Et Access 2003.

Il est oùùùùùùùùùùùùùùùù le gag ?

Publié : 15 juin 2007 14:36
par Bidouille
Denis_AeC a écrit :Moi aussi : 2.2 sous XP. Sous Ubuntu, je verrai ce soir.
Bonjour,

Dans ce cas et afin de ne pas égarer les gens qui vous répondent, il est donc impératif et obligatoire de fournir le numéro de version exact que vous utilisez ainsi que votre système d'exploitation.

Merci de mettre à jour votre signature en conséquence.

Ca marche pour la petite table !

Publié : 15 juin 2007 18:36
par Denis_AeC
Après bien des essais, et en regardant ce que Dude avait réussi à importer, j'ai réussi à importer correctement la table Voile.

La bonne méthode est de "créer" une Base en tant que connexion sur la base Access, de créer une autre Base vide. Ensuite copier une table d'Access et la coller dans la nouvelle Base.

Le problème est alors de choisir les champs à transférer (facile) et ensuite de modifier si besoin leurs types / longueur / saisie requise ou non (plus délicat).

Sans en être sur, voici quelques unes des erreurs faites :
- ajout d'une clé primaire alors que la table d'origine en possède une (même si elle n'est pas bonne...). Je referai un essai avec une seconde clé si j'arrive à virer ce champ texte clé primaire.
- longueur à 0 (proposée par Base) pour les textes : à surveiller ... dans le tas on en oublie !
- saisie requise (proposée par Base) alors que certains enregistrements sont vides pour ce champ : à surveiller aussi ... dans le tas on en oublie !
- données texte à importer trop longues par rapport au champ de destination : Base propose Texte 255, c'est parfois trop court (et Mémo à 2M car, c'est long !)
- champ booléen d'origine en champ texte de longueur 2 (comme proposé par Base) : il faut le passer en Booléen.
- champ date : Base veut les importer en date/Heure, pas moi !

Toutes ces manips ont été faites en XP SP1, Access 2002 et OOo 2.2.

Sous Ubuntu, j'ai des problèmes de jeux de caractères (je crois 1252 d'un coté et UTF8 ou 16 de l'autre). Donc, je transfère sous XP et verrai après comment ça passe en Linux.
[Edit] Sous Ubuntu, c'est nickel ... pas de problème d'accent ou de caractère bizarre, tout est bien passé. Les données sont probablement restées en CP1252. On verra plus tard quand j'ajouterai de nouveaux enregistrements.

Il me reste à faire l'import de l'autre table ... 520 enreg. !
[Edit] Import passé comme une lettre à la poste, j'en reviens encore pas !

Merci pour l'aide :D

PS : signature changée :wink:
[Edit] euhhhhhhhh, RE-changée, la 1ère modif s'étant perdue ... :lol:

"Compactage" de la Base Access avant import dans B

Publié : 16 juin 2007 07:53
par Denis_AeC
Pour la base que j'avais fournie ici, j'avais passé sans le faire exprès une "vieille" base (420 lignes au lieu des 530 actuelles), et "compactée" au sens Access. Je m'en suis rendu compte ensuite, après avoir importé avec succès la table Voile et vu qu'il manquait des choses.

J'ai donc repris ma base actuelle et l'ai compactée via Access, et, depuis ça + les explications de Dude, l'import se passe bien.

Je ne suis pas sur que le compactage m'ait bloqué auparavant, mais ça ne mange pas de pain de compacter sa base Access avant de faire des copier / coller de tables d'Access vers Base.

Encore merci à Dude pour ses conseils.

Denis