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 :

.txt vers BDD MS SQL [2014]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 52
    Par défaut .txt vers BDD MS SQL
    Bonjour à toutes et à tous,

    Je suis actuellement sur un projet où je dois transférer des données venant d'un fichier texte vers une BDD MS SQL.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    /* This sample program shows how to create a database record. */
     
    /* define PURE_SQL to use a SQL INSERT INTO statement instead of   */
    /* DBCreateRecord and DBPutRecord.                                 */
    #undef PURE_SQL
    #include "cvi_db.h"
    #include <utility.h>
    #include <ansi_c.h>
    #include <userint.h>
     
    void ShowError()
    {
        MessagePopup("Database Error",DBErrorMessage());
    }
     
     
    void main()
    {
        int hdbc = 0;       /* Handle to database connection    */
        int hmap = 0;       /* Handle to map                    */
        int hstmt = 0;      /* Handle to SQL statement          */
        char uutNum[11];    /* Buffer for uut serial number     */
        int uutStat;        /* Status variable for uut number   */
        double meas1;       /* Variable for test measurement 1  */
        int meas1Stat;      /* Fetch status  for measurement 1  */
        double meas2;       /* Variable for test measurement 2  */
        int meas2Stat;      /* Fetch tatus for measurement 2    */
        int resCode;        /* Result code                      */
    	char dsn[74]	;
     
    #ifdef WIN64
    	DisableBreakOnLibraryErrors();
    #endif 
    	/* Connect to database (in this case dBase files) */
        hdbc = DBConnect ("DSN = ");
    #ifdef WIN64
    	EnableBreakOnLibraryErrors();
    	if (hdbc == -10 || hdbc == -11) {
    		MessagePopup ("Could not connect to Datasource", 
    			"The SQL Toolkit could not connect to the \"CVI SQL Samples\" data source.\n"		\
    			"The most likely reason for this is because the SQL Toolkit was unable to\n"		\
    			"register the datasource at installation time. The samples.mdb file requires\n" 	\
    			"a 64-bit Access driver and as of April 2010 one did not exist. According to\n"		\
    			"Microsoft, the Jet Database Engine is being deprecated and will be replaced\n"		\
    			"with a new x64 compatible Access Database Engine when Office 2010 is released.\n\n"\
    			"Once a 64-bit Access driver has been released and installed on this machine,\n"	\
    			"the DSN can be added by opening up Control Panel and then going to\n"				\
    			"Administrative Tools >> Data Sources (ODBC). In the System DSN tab, hit the\n"		\
    			"Add button and select the Microsoft Access Driver you just installed. You must\n"	\
    			"set the Data Source Name as \"CVI SQL Samples\".\n"		\
    			"Then Select the samples.mdb database located at:\n"								\
    			"C:\\Users\\Public\\Documents\\National Instruments\\CVI\\samples\\sql\\samples.mdb.\n"	\
    			"Click the OK button and then the SQL samples should work.\n\n"			\
    			"Note: The SQL samples should all work correctly when run in 32-bit mode."
    			);
    		goto Error;
    		}
    	else
    #endif
        if (hdbc <= 0) {ShowError(); goto Error;}
     
    #ifdef PURE_SQL
        resCode = DBImmediateSQL(hdbc, "INSERT INTO TESTRES (UUT_NUM, MEAS1, MEAS2) \
                    VALUES ('2860B567',0.7,1.1)");
    #else
     
        /* begin map for constructed SQL statement */
        hmap = DBBeginMap (hdbc);
        if (hmap <= 0) {ShowError(); goto Error;}
     
        /* specify the columns to be selected and the variables where column */
        /* values will be placed.                                            */
        resCode = DBMapColumnToChar (hmap, "UUT_NUM", 11, uutNum, &uutStat, "");
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
        resCode = DBMapColumnToDouble (hmap, "MEAS1", &meas1, &meas1Stat);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
        resCode = DBMapColumnToDouble (hmap, "MEAS2", &meas2, &meas2Stat);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
     
        /* Activate the map for table testres.  (construct a SQL Select     */
        /* statement, execute the statement, bind the selected columns to   */
        /* the previously specified variables.)                             */
        hstmt = DBActivateMap (hmap, "testres");
        if (hstmt <= 0) {ShowError(); goto Error;}
     
        /* Create the new record */
        resCode = DBCreateRecord (hstmt);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
     
        /* Put values into the bound variables */
        strcpy(uutNum, "2860B567");
        meas1 = 0.7;
        meas2 = 1.1;
     
        /* Insert the record into the database */
        resCode = DBPutRecord (hstmt);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
     
        resCode = DBDeactivateMap (hmap);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
    #endif
        resCode = DBDisconnect (hdbc);
        if (resCode != DB_SUCCESS) {ShowError(); goto Error;}
        MessagePopup ("Create Record Sample",
                      "Successfully created record for UUT_NUM 2860B567");
    Error:
        return;
    }
    Exemple donné dans la librairie SQL Tool.

    Je ne sais pas comment faire pour me connecter à la BDD en question (le terme DSN apparaît). Et je ne sais ni comment aller lire ce fichier.txt pour transférer les données.

    En vous remerciant,
    AUFFRET Fabien.

  2. #2
    Membre chevronné
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je pense que l'erreur est dans la chaîne de connexion DSN (Data source Name) , vous devez remplir les paramètre de votre DSN :

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSN=myDsn;Uid=myUsername;Pwd=;
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 52
    Par défaut
    Merci pour ta réponse rapide Taibag.

    J'ai vu qu'il y avait un moyen plus simple appelé SSIS qui me semble fort intéressant, je vais donc m'attarder dessus pour voir si c'est réalisable ici.

    Encore une fois, merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser du bulk insert en transact SQL :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BULK INSERT AdventureWorks2008R2.Sales.SalesOrderDetail
       FROM 'f:\orders\sales.txt'
       WITH 
          (
             FIELDTERMINATOR =' ;',
             ROWTERMINATOR =' |\n'
          )
    un peu d'aide :

    https://technet.microsoft.com/fr-fr/...ql.105%29.aspx

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 52
    Par défaut
    C'est une bonne idée, en effet. Mais je vais avoir deux fichiers txt et j'ai 3 tables dans ma BDD. Un fichier va servir pour une seule table et l'autre pour deux tables. Dans ces fichiers txt, je ne pas besoin de toutes les données car elles vont servir pour un logiciel de supervision assez basique, et le reste des infos serviront à une supervision plus complexe par la suite.

  6. #6
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Dans ce cas il est alors plus approprié d'utiliser un ETL comme SSIS qui va permettre d'inserer les données avec de l'intelligence.

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

Discussions similaires

  1. copie d´un fichier txt vers MS SQL Server
    Par makohsarah dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/10/2010, 17h26
  2. fichier txt vers fichier .sql
    Par radzar dans le forum Langage SQL
    Réponses: 9
    Dernier message: 12/03/2009, 13h40
  3. XML + XSD vers BDD Sql Server ?
    Par LordZener dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/03/2008, 17h11
  4. Restore d une BDD de Sql serv er 2005 vers Sql Server 2000
    Par Nadaa dans le forum Administration
    Réponses: 1
    Dernier message: 27/09/2007, 13h11
  5. Restore d une BDD de Sql serv er 2005 vers Sql Server 2000
    Par Nadaa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/09/2007, 13h11

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