IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

BCP - Insertion de chaine vide


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut BCP - Insertion de chaine vide
    Bonjour,

    J'utilise depuis peu le bulk copy pour inserer des donnees dans ma table. J'ai cree differents scripts et justque la tout fonctionnait.
    Les donnees que j'ai aujourd'hui sont les suivantes (reduites pour plus de lisibilite):

    1242816,4,AirFrance_MMR.EUR.SU/1604296/1242816/1445352,AIR-FRANCE,,,3/20/2013 12:00:00 AM,0
    AIR-FRANCE,2,AIR-FRANCE,AIR-FRANCE,,,,
    Comme vous pouvez le voir, toutes les valeurs ne sont pas definies et quand j'execute le script, j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQLState = 22008, NativeError = 0
    Error = [Microsoft][ODBC SQL Server Driver]Invalid date format
    Savez-vous comment je peux definir dans le process bcp le fait qu'il doive loader dans la base une valeur NULL quand il n'y a pas de valeur definie dans le fichier texte ?

    Merci d'avance !

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Utilisez plutôt la commande BULK INSERT avec l'option FIELDTERMINATOR

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour la reponse mais j'utilise un fichier de formatage qui contient le propriete filedTerminator:

    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
     
    8.0
    30
    1       SQLCHAR       0       40      ","                       1     product_id             SQL_Latin1_General_CP1_CI_AS
    2       SQLCHAR   0       2       ","                       2     product_type_id        SQL_Latin1_General_CP1_CI_AS
    3       SQLCHAR       0       100     ","                       3     name                   SQL_Latin1_General_CP1_CI_AS
    4       SQLCHAR       0       20      ","                       4     underlying             SQL_Latin1_General_CP1_CI_AS
    5       SQLCHAR       0       10      ","                       5     market                 SQL_Latin1_General_CP1_CI_AS
    6       SQLCHAR       0       10      ","                       6     settlement_mode        SQL_Latin1_General_CP1_CI_AS
    7       SQLCHAR   1       8       ","                       7     maturity               SQL_Latin1_General_CP1_CI_AS
    8       SQLCHAR       1       8       ","                       8     strike                 SQL_Latin1_General_CP1_CI_AS
    9       SQLCHAR       0       1       ",,"                      9     strike_mode            SQL_Latin1_General_CP1_CI_AS
    10      SQLCHAR       0       1       ","                       10    strike_in_percent      SQL_Latin1_General_CP1_CI_AS
    11      SQLCHAR       1       8       ","                       11    QA                     SQL_Latin1_General_CP1_CI_AS
    12      SQLCHAR       1       8       ","                       12    QB                     SQL_Latin1_General_CP1_CI_AS
    13      SQLCHAR   1       2       ","                       13    lot_size               SQL_Latin1_General_CP1_CI_AS
    14      SQLCHAR   1       2       ","                       14    floor                  SQL_Latin1_General_CP1_CI_AS
    15      SQLCHAR       1       8       ","                       15    strike2                SQL_Latin1_General_CP1_CI_AS
    16      SQLCHAR       0       1       ","                       16    strike2_in_p ercent     SQL_Latin1_General_CP1_CI_AS
    17      SQLCHAR       0       1       ","                       17    OGC                    SQL_Latin1_General_CP1_CI_AS
    18      SQLCHAR       0       10      ","                       18    OGC_curr               SQL_Latin1_General_CP1_CI_AS
    19      SQLCHAR       1       8       ","                       19    OGC_rate               SQL_Latin1_General_CP1_CI_AS
    20      SQLCHAR       0       3       ","                       20    currency               SQL_Latin1_General_CP1_CI_AS
    21      SQLCHAR       0       20      ","                       21    issuer                 SQL_Latin1_General_CP1_CI_AS
    22      SQLCHAR       0       20      ","                       22    debt_class             SQL_Latin1_General_CP1_CI_AS
    23      SQLCHAR       1       8       ","                       23    point_value            SQL_Latin1_General_CP1_CI_AS
    24      SQLCHAR       0       10      ","                       24    mkt_settl_mode         SQL_Latin1_General_CP1_CI_AS
    25      SQLCHAR       0       1       ","                       25    american_european      SQL_Latin1_General_CP1_CI_AS
    26      SQLCHAR        1       4       ","                       26    market_cap             SQL_Latin1_General_CP1_CI_AS
    27      SQLCHAR       0       300     ","                       27    additional_info        SQL_Latin1_General_CP1_CI_AS
    28      SQLCHAR       0       1       ","                       28    margin_call            SQL_Latin1_General_CP1_CI_AS
    29      SQLCHAR       1       8       ","                       29    rebate_in_percent      SQL_Latin1_General_CP1_CI_AS
    30      SQLCHAR       0       20      "\r\n"                       30    society                SQL_Latin1_General_CP1_CI_AS
    Il me semble que ca qui pose pb n'est pas la delimitation du champs, mais plutot le fait qu'il ne sache pas que s'il n'y a rien d'inscrit entre deux virgules, il doive inserer NULL en base :-(

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    En fait c'est du a une erreur de ma part, la question n'est donc pas necessaire.

    Ca fonctionne tres bien avec le fichier .fmt de formatage, mais tel qu'il a ete construit par le bcp la premiere fois, il y a des index fixes a '1'... ce qui decale la lecture des valeurs et faisait planter la copie losrque le champs suivant etait vide.

    Merci encore pour ta reponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion d'une chaine vide dans un double
    Par root76 dans le forum Langage
    Réponses: 9
    Dernier message: 05/01/2007, 15h49
  2. Insert de chaine vide
    Par Tiaps dans le forum Oracle
    Réponses: 1
    Dernier message: 03/07/2006, 18h48
  3. Création de table - chaine vide
    Par christellel198 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/10/2005, 15h18
  4. copie de string donne une chaine vide
    Par zmatz dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/10/2005, 15h31
  5. [BDD] renvoyer une chaine vide au lieu de null
    Par cmoulin dans le forum JDBC
    Réponses: 6
    Dernier message: 06/05/2004, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo