Bonjour,

Voici mon code qui me sert à importer des fichiers texte :
J' efface la table si elle existe déjà
Je crée la structure de la table, et
j' utilise bulk insert pour importer les données.

Cela marche bien sur 10 fichiers, sauf sur 2 qui contiennent des valeurs décimales. Or mon spérateur décimal,dans le fichier texte, est la virgule et non le point.

Dans le code ci joint, c'est la variable PX_ACH, qui posent problème.

Comment forcer la virgule comme séparateur décimal ?
Sinon, y a til un moyen pour remplacer les virgules par un point dans le champ PX_ACH, ce qui me permettrait de faire un ALTER TABLE ... ALTER COLUMN ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
use SOCLEFEJ
 
DECLARE @dossier varchar (70) ,@fichier varchar(50), @tble_so varchar(30),
@commande varchar(300),@com_drop varchar(50), @com_cr varchar(5000);
 
set @dossier='\\fqx23052\XXX\YYY\';
set @fichier ='1MSBI_OUT_ligne_vente_20100222.txt';
set @tble_so='VENTE_LIGNE';
 
IF EXISTS (SELECT TABLE_NAME a FROM INFORMATION_SCHEMA.TABLES
        WHERE TABLE_NAME =  @tble_so 
        and table_schema='recette')
    set @com_drop='DROP TABLE recette.'+@tble_so;
    execute(@com_drop);
 
set @com_cr='create table soclefej.recette.'+@tble_so+'
(
NO_TICKET VARCHAR(50) NULL,
ID_VEND VARCHAR(50) NULL,
ID_ARTICLE VARCHAR(50) NULL,
COD_BAR VARCHAR(50) NULL,
COD_TRAITEMENT VARCHAR(50) NULL,
QTECDE VARCHAR(50) NULL,
NB_UNI VARCHAR(50) NULL,
ID_MOT_RET varchar(50) NULL,
PX_ACH NUMERIC(18,4) NULL
)ON [PRIMARY]';
 
execute(@com_cr)
 
set @commande='BULK INSERT soclefej.recette.'+@tble_so+' from '+''''+@dossier+@fichier+''''+' WITH (  
         FIELDTERMINATOR ='''+'\t'+''' , ROWTERMINATOR ='+'''\n'''+' , firstrow=2 );';
execute(@commande)

Merci de votre aide