OVH Cloud OVH Cloud

openrowset select sur fichier externe...

3 réponses
Avatar
LaC
Bonjour,

j'ai une incompréhension de la fonction openrowset.
Mon but est de faire une requête sur un fichet texte (.csv).
Les fichiers en question ont pour séparateur de champ la virgule ,

Quand j'utilise la fonction openrowset avec les accès aux données....
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)}
ou
'Microsoft.Jet.OLEDB.4.0',
'Text;

...sous l'analyseur de requêtes, je n'obtiens qu'une colonne en retour.
Si le séparateur est un ; alors ca marche....mais je ne suis pas maître du
format des fichiers !

Je n'ai pas trouvé dans les méthodes d'acces aux données une propiété pour
définir le séparateur de colonne, et c'est bien la mon problème...

Je ne sais pas s'il y a une option au niveau système (options
régionales..j'ai essayé) ou au niveau de l'analyseur de requête, qui
permetrait de définir le délimiteur...

Merci pour vos réponses.....

3 réponses

Avatar
bruno reiter
pour récupérer les données d'un fichier texte il vaut mieux utiliser
bcp (ligne de commande)
ou BULK INSERT
voir aide pour les détails

br

"LaC" a écrit dans le message de news:

Bonjour,

j'ai une incompréhension de la fonction openrowset.
Mon but est de faire une requête sur un fichet texte (.csv).
Les fichiers en question ont pour séparateur de champ la virgule ,

Quand j'utilise la fonction openrowset avec les accès aux données....
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)}
ou
'Microsoft.Jet.OLEDB.4.0',
'Text;

...sous l'analyseur de requêtes, je n'obtiens qu'une colonne en retour.
Si le séparateur est un ; alors ca marche....mais je ne suis pas maître du
format des fichiers !

Je n'ai pas trouvé dans les méthodes d'acces aux données une propiété pour
définir le séparateur de colonne, et c'est bien la mon problème...

Je ne sais pas s'il y a une option au niveau système (options
régionales..j'ai essayé) ou au niveau de l'analyseur de requête, qui
permetrait de définir le délimiteur...

Merci pour vos réponses.....



Avatar
LaC
Merci Bruno,

....je connais les 2 fonctions et même si elles ne répondent pas vraiment à
mon problème, j'ai mon scripte bulk insert....enfin tant qu'on me propose
pas du dts ;)

"bruno reiter" a écrit dans le message de
news: %
pour récupérer les données d'un fichier texte il vaut mieux utiliser
bcp (ligne de commande)
ou BULK INSERT
voir aide pour les détails

br

"LaC" a écrit dans le message de news:

Bonjour,

j'ai une incompréhension de la fonction openrowset.
Mon but est de faire une requête sur un fichet texte (.csv).
Les fichiers en question ont pour séparateur de champ la virgule ,

Quand j'utilise la fonction openrowset avec les accès aux données....
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)}
ou
'Microsoft.Jet.OLEDB.4.0',
'Text;

...sous l'analyseur de requêtes, je n'obtiens qu'une colonne en retour.
Si le séparateur est un ; alors ca marche....mais je ne suis pas maître
du format des fichiers !

Je n'ai pas trouvé dans les méthodes d'acces aux données une propiété
pour définir le séparateur de colonne, et c'est bien la mon problème...

Je ne sais pas s'il y a une option au niveau système (options
régionales..j'ai essayé) ou au niveau de l'analyseur de requête, qui
permetrait de définir le délimiteur...

Merci pour vos réponses.....







Avatar
Med Bouchenafa
Pour que SQL Server, ou tout autre application d'ailleurs, puisse lire un
fichier texte, il lui faut connaitre la structure du fichier texte
Dans le cas d'un acces ODBC, la structure du fichier doit être spécifiée
dans un fichier dénommé SCHEMA.INI
Une recherche sur Google avec SCHEMA.INI et TEXT devrait te ramener pas mal
de liens interessants
--
Bien Cordialement
Med Bouchenafa


"LaC" wrote:

Bonjour,

j'ai une incompréhension de la fonction openrowset.
Mon but est de faire une requête sur un fichet texte (.csv).
Les fichiers en question ont pour séparateur de champ la virgule ,

Quand j'utilise la fonction openrowset avec les accès aux données....
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)}
ou
'Microsoft.Jet.OLEDB.4.0',
'Text;

....sous l'analyseur de requêtes, je n'obtiens qu'une colonne en retour.
Si le séparateur est un ; alors ca marche....mais je ne suis pas maître du
format des fichiers !

Je n'ai pas trouvé dans les méthodes d'acces aux données une propiété pour
définir le séparateur de colonne, et c'est bien la mon problème...

Je ne sais pas s'il y a une option au niveau système (options
régionales..j'ai essayé) ou au niveau de l'analyseur de requête, qui
permetrait de définir le délimiteur...

Merci pour vos réponses.....