Bonjour,
Est ce possible d'extraire et générer un fichier au format fixe avec BCP?
Merci d'avance
Bonjour,
Est ce possible d'extraire et générer un fichier au format fixe avec BCP?
Merci d'avance
Qu'est-ce que tu entends par "format fixe" ?
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Si la colonne est définie sur 20 caractères et qu'il n'y a que 15 caractères dans la base alors remplir par espace pour arriver à une longueur de 20.
De ce fait, ce n’est pas le séparateur qui définit la position d’un champ mais sa longueur :
col1, col2, col3
Versus
col1 col2 col3
Et pour les entiers / numériques, vous voulez mettre quoi ?
J'ai bien peur que ce que vous cherchez à faire n'est pas viable... Quel est le but recherché derrière tout ça?
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère
Installation de Code::Blocks sous Debian à partir de Nightly Builds
S'il n'y a que des varchar, tu peux créer une vue qui fait des convert(char(xx), ...), et faire un bcp out depuis la vue.
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Oui, ça l'est.Est ce possible d'extraire et générer un fichier au format fixe avec BCP?
Merci d'avance
de rien.
Il faut utiliser les fichiers "format" de BCP (voire la doc Sybase pour les détails), par exemple:
pour une table :
le fichier "format" pourrait être:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 create table tstbcp ( colid int , collb varchar(50) , colst int )
la première ligne contient un numéro de version (O/C, BCP, ou TDS, je ne sais plus trop)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 10.0 3 1 SYBCHAR 0 4 "" 1 colid 2 SYBCHAR 0 50 "" 2 collb 3 SYBCHAR 0 4 "\n" 3 colst
la deuxième ligne contient le nombre de colonnes dans le fichier de sortie
ensuite chaque ligne défini une colonne:
- position de la colonne dans le fichier de sortie
- type dans le fichier de sortie (par exemple, un "int" dans une table peut être extrait en tant que SYBCHAR)
- la longueur du "pre-fixe-length" ("0" indique qu'on n'utilisera que 0 octet pour stoker la longueur de la zone dans le fichier de sortie, donc rien, c'est à dire que dans ce cas, l'information ne nous intéresse pas dans le fichier de sortie)
- longueur de la colonne dans le fichier de sortie
- séparateur de colonne (noter le "\n" sur la dernière colonne)
- position de la colonne dans la table (c'est peut-etre inversé avec l'autre position, c'est à vérifier)
- nom de la colonne dans la table
Ensuite il faut lancer le BCP avec l'option "-f"
il y a possibilité de générer ce fichier format en invoquant la commande BCP sans l'option "-f" et en répondant aux différentes question de BCP
Code : Sélectionner tout - Visualiser dans une fenêtre à part % bcp <db-name>..tstbcp out tstbcp.out -f tstbcp.fmt -U<user-name> -P<user-pwd> -S<srv-name>
DBRep
C'est curieux le format de fichier obtenu. J'ai des caractères spéciaux :
x ? @GRP01 INST1 01/01/1900 A
ce n'est pas exploitable.
Il faut que tu m'en dises plus:Envoyé par FHeybati
- quel contenu as-tu dans ton fichier format de BCP
- quelle structure de table as-tu
- quelle commande exécutes-tu (ligne de commande BCP)
et éventuellement ta version d'ASE et O/C
DBRep
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