Jump to content
Bigbear

Importer Un Fichier Texte Séparé Par Des ";"

Recommended Posts

Avez vous un truc pour ajouter des enregistrements, venant d'un fichier Texte. Les champs sont séparés par des ; or FM ne reconnaît que des virgules ou tabulations.

Je séche

Merci d'avance

Share this post


Link to post
Share on other sites
Avez vous un truc pour ajouter des enregistrements, venant d'un fichier Texte. Les champs sont séparés par des ; or FM ne reconnaît que des virgules ou tabulations. (...)

Éditer le fichier de départ avec Word et y remplacer les points-virgules par des virgules, ou plutôt des tabulations.

Bien sûr, ça ajoute un logiciel dans la chaîne et il faut savoir combien de fois il faut entreprendre ce processus. Pour une fois, ça va, sinon, eh bien il faudra une solution plus riche.

Bon courage.

Share this post


Link to post
Share on other sites

Importer dans Excel ou Calc (OpenOffice) et exporter en choisissant Tab ou , comme séparateur.

Share this post


Link to post
Share on other sites

Bonjour,

Le séparateur ; (point virgule) est le CSV (comma separated values). C'est un format d'échange de fichier courant dans les grosses solutions informatiques.

Effectivement, il est lisible par la plupart des logiciels de données. Excel le fait très bien par en double cliquant sur le fichier.csv. Mais attention aux différentes plateformes (PC à MAC) les caractères au-delà de 256 (les caractères accentués) sont décodés.

Tabulo ou Bento le font aussi très bien.

FMP, lui est assez étonnant : dans Fichier -> Importer un fichier, sélectionner Tout format, activer le fichier choisi (attention un seul clic, si deux clics importation dans une seule rubrique !!!) sélectionner Mailing, puis Ouvrir et choisissez le format d'origine du fichier (Windows ou Mac).

Et là ça marche !

C'est pour moi un bricolage tordu, moins pire que de convertir en Excel ou autres, mais hélas c'est le seul moyen que j'ai trouvé pour convertir chaque mois des tonnes de données provenant des opérateurs de télécommunication mobile. Hélas aussi la V10 n'a rien changé à cet état de fait.

Par contre pour l'export, le format mailing est adapté en changeant l'extension en .csv. Allez comprendre...

Bon courage

A+

Share this post


Link to post
Share on other sites

Merci aux participants précédents.

Cela fonctionne toujours en v12 à condition de changer l'extension .csv du nom de fichier par .mer

Remarque:

On ne peut pas « simplement » remplacer les ; du fichier de données par des virgules parce que le format csv autorise l'utilisation de séparateurs à l'intérieur d'un champ comme caractère normal, pourvu que ce champ soit encadré par des guillemets (double quotes). En d'autres termes, le remplacement aurait pour effet de changer aussi les ; dans ces contenus par des , et donc d'altérer ces contenus :-(

Share this post


Link to post
Share on other sites

Bonjour,

 

Le 23/02/2015 à 11:00, jmvr a dit :

Remarque:
On ne peut pas « simplement » remplacer les ; du fichier de données par des virgules parce que le format csv autorise l'utilisation de séparateurs à l'intérieur d'un champ comme caractère normal, pourvu que ce champ soit encadré par des guillemets (double quotes). En d'autres termes, le remplacement aurait pour effet de changer aussi les ; dans ces contenus par des , et donc d'altérer ces contenus :-(

 

Taratata !!!

 

… pour le plaisir du contre-example,
 
Supposons un fichier de type .csv ou .mer avec deux colonnes dont le séparateur de colonnes/rub. est la virgule mais pourrait tout aussi bien être le point-virgule ou autre. 
Ce fichier, si correctement écrit, balise chaque champ/rubrique avec des guillemets.
Si un champ comporte un ou plusieurs guillemets, celui/ceux-ci sont chacuns échappés/protégés par un autre guillemet.
 
ID,DATA
"1","enreg.1 Mon texte sans virgule."
"2","enreg.2, Mon texte avec une virgule."
"3","enreg.3, Mon texte avec deux virgules,"
"4",""","" enreg.4 ,,,,"","" ,,,, Mon texte avec n virgules précédées et suivies ou non par des guillemets "","""
 
Donc pour modifier le séparateur virgulle par un guillemet, on opère successivement
  1. on substitue dans chaque colonne les séquences "","" par un non-caractère ou une chaîne de caractères improbable.
  2. on substitue les séquences "," (les délimiteurs) par ";"
  3. et pour finir on substitue le non-caractère ou autre improbable par sa valeur initiale "",""
 
Ce qui exprimé dans un terminal OSX peux se traduire par la simple commande:
perl -pi -e 's/\"\",\"\"/\u0000/g, s/\",\"/\";\"/g, s/\u0000/\"\",\"\"/g' '/Users/lambda/xxx/myFile.csv'
commande qui portée dans l'Editeur AppleScript donne:
do shell script "perl -pi -e 's/\\\"\\\",\\\"\\\"/\\u0000/g, s/\\\",/\\\";\\\"/g, s/\\u0000/\\\"\\\",\\\"\\\"/g'" & space & quoted form of "/Users/lambda/xxx/myFile.csv"
 
lequel AppleScript porté dans "$_cmd" une variable FMP, donne le très migraineux: 
"do shell script \"perl -pi -e 's/\\\\\\\"\\\\\\\",\\\\\\\"\\\\\\\"/\\\u0000/g, s/\\\\\\\",\\\\\\\"/\\\\\\\";\\\\\\\"/g, s/\\\u0000/\\\\\\\"\\\\\\\",\\\\\\\"\\\\\\\"/g'\" & space & quoted form of \"//Users/lambda/xxx/myFile.csv\""
… ne reste donc plus qu'a utiliser la commande FMP "Exécuter AppleScript" (calculé) avec $_cmd en guise de paramètre.
 

Pour donner un peu plus de souplesse au calcul, on peux définir la variable $_cmd en la structurant un peu

Définir variable [$_cmd; Valeur: Definir ( [    fpath = "/Users/lambda/xxx/myFile.csv" ;  find = Caractere ( 44 ) ; // virgule    replace = Caractere ( 59 )  ; // point-virgule    nullChar = "\\\u0000" ; // je n'utilise JAMAIS Caractere (0), il peux selon emploi violemment planter FMP !; mais sa version Unicode hexadécimale compréhensible par le shell.    sq_find = "\\\\\\\"" & find & "\\\\\\\"" ;    sq_replace = "\\\\\\\"" & replace & "\\\\\\\"" ;      dq_find = "\\\\\\\"\\\\\\\"" & find & "\\\\\\\"\\\\\\\""] ; "do shell script \"perl -pi -e 's/" & dq_find & "/" & nullChar & "/g, s/" & sq_find & "/" & sq_replace & "/g, s/" & nullChar & "/" & dq_find & "/g'\" & space & quoted form of " & Citation ( fpath ))]#Exécuter AppleScript [$_cmd]

Les utilisateurs Windows pourront eux substituer ces caractères en exportant une rubrique contenant VBScript (avec ouverture automatique du fichier).

Share this post


Link to post
Share on other sites

Pour être franc, même si votre réponse présente un intérêt évident, je ne l'ai pas lue in-extenso pour les raisons suivantes:

1) Le respect du format CSV par l'émetteur et le récepteur devrait rester un fondement de tout échange de données et je fais confiance au logiciel Filemaker pour cela, surtout s'il est suffisant de rajouter un .mer comme extension. C'est simple, efficace et par nature moins risqué que n lignes de script, dès que n est > 1

2) Un « non-caractère ou une chaîne de caractères improbable » signifie une convention unilatérale (versus le respect de la norme qu'est le format CSV) et représente donc une prise de risque qui doit correspondre à une nécessité du cas de figure

Dans mon cas, il n'y avait pas cette nécessité, mais bravo pour votre maîtrise de l'interaction entre environnements (dont je prends note) et merci.

Share this post


Link to post
Share on other sites

…le respect de la norme qu'est le format CSV

 

à part son type mime, CSV n'obéi et n'est régi par aucune norme ni standard. Il n'est fait que de "conventions" que chaque éditeur aménage à sa "sauce".

Share this post


Link to post
Share on other sites

Bonjour,

j'aimerais bien utiliser l'Applescript pour cette action (Fichier en .csv avec séparateurs ";").

J'ai un très gros fichier (8,54 Go) à traiter et des applis type BBEdit ou Smile ne veulent pas l'ouvrir.

Toutefois la commande ne fonctionne pas  :  do shell script "perl -pi -e 's/\\\"\\\",\\\"\\\"/\\u0000/g, s/\\\",/\\\";\\\"/g, s/\\u0000/\\\"\\\",\\\"\\\"/g'" & space & quoted form of "/Users/minibena/fevrier.csv"

Est-ce un problème de chemin ou de syntaxe ?

Share this post


Link to post
Share on other sites

Excusez-moi pour cette intervention erroné. C'était en effet la syntaxe qui posait problème.

Je voulais aller de point-virgule à virgule alors que l'exemple cité allait de virgule à point-virgule.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...