Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Outils
Outils Forum d'entraide sur les outils gravitant autour de MS-SQL Server, tels que bcp, TDS, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 11h58   #1
Futur Membre du Club
 
Inscription : février 2007
Messages : 125
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2007
Messages : 125
Points : 18
Points : 18
Envoyer un message via MSN à snach
Par défaut sqlcmd export vers un fichier txt

Bonjour,

Je souhaite faire un export vers un fichier text via sqlcmd:
J'execute donc le code suivant:
Code :
sqlcmd -E -Sinstance -o C:\rep\toto.txt -Q "set nocount on select * from test;" -h-1 -W
Le probleme vient quand je veux lire ce fichier et utiliser les longeurs de chaque champs pour extraire ce que j'ai besoin, les tailles ne correspondent pas toujours:
exemple: numeric (15, 0) me donne une longeur de 18

Quand j'execute:
Voila ce que j'obtiens:
Type; Precision; longeur; ce que j'ai dans mon fichier;
INT ; 10; 4 ; 4;
Numeric (15,2) ; 15; 17; 18;
NVARCHAR ; 1; 2; 2;

Est ce que quelqu'un pourrais m'expliquer le fonctionement et savoir comment je dois calculer les longeurs reels

Merci par avance
snach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 23h12   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par snach Voir le message

Code :
sqlcmd -E -Sinstance -o C:\rep\toto.txt -Q "set nocount on select * from test;" -h-1 -W
Remplace ton SELECT * par les colonnes que tu souhaites exportées,
ceci pour avoir une idée claire sur l’ordonnancement des colonnes dans le fichier de sortie

Code :
sqlcmd -E -Sinstance -o C:\rep\toto.txt -Q "set nocount on select colonne1, colonne2, colonnex from test " -h-1 -W

Citation:
Envoyé par snach Voir le message

Voila ce que j'obtiens:
Type; Precision; longeur; ce que j'ai dans mon fichier;

Numeric (15,2) ; 15; 17; 18;

Merci par avance
Tu peux utiliser les fonctions LTRIM et RTRIM pour voir ...?

Mais il me semble avec Numeric (15,2)

Si on a par exemple : 123456789012345.12 ça fait 18 caractères en comptant le point (.) ? Non ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 09h32   #3
Futur Membre du Club
 
Inscription : février 2007
Messages : 125
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2007
Messages : 125
Points : 18
Points : 18
Envoyer un message via MSN à snach
L'ajout des colonnes ne changera rien.
Pour les numerics il ne faut pas prendre en compte le (.)
si tu as un NUMERIC(5,3) :
--> 5 correspond à la taille totale et 3 correspond au nb de digit apres la virgule.

Pour mon probleme Ce que je ne comprend pas, c'est pourquoi dans mon fichier txt je n'ai pas les meme longeur que dans la procedure stoquée .

Meme en partant du principe que j'ai un espace par défaut lors de l'extract j'ai toujours un espace plus important entre mes champs

ex:je 'ai un datetime suivi d'un numeric(20,0)

resultat:
2009-11-15 17:47:19.533......................0
2010-11-15 17:47:19.533......................0
2009-11-15 17:47:19.533......................0

J'ai donc une longeur de 23 pour le champ datetime et une longeur de 22 (+1 correspondant à l'espace que j'ai supposé etre un séparateur).

Si quelqu'un peut m'éclairer la dessus ?
snach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h36   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par snach Voir le message
J'ai donc une longeur de 23 pour le champ datetime et une longeur de 22 (+1 correspondant à l'espace que j'ai supposé etre un séparateur).
Pour le nombre de caractères je pense qu'il faut prendre en compte le point (.) dans les décimaux
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h42.


 
 
 
 
Partenaires

Hébergement Web