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

VB.NET Discussion :

export de données [oracle vers sql server]


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut export de données [oracle vers sql server]
    je dispose du code suivant pour recupere une table oracle et la mettre dans une table 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
     Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
                         + "(ADDRESS=(PROTOCOL=TCP)(HOST= SM65CVDF)(PORT=1521)))" _
                         + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OSMOSE)));" _
                         + "User Id=OSMOSE;Password=OSMOSE;"
            Dim dsRequete As DataSet
            Dim laRequete As String
            Dim conn As New OracleConnection(oradb)
            conn.Open()
     
            Dim cmd As New OracleCommand
            cmd.Connection = conn
            cmd.CommandText = "select EVENT_CLIENT from EVENEMNT "
            cmd.CommandType = CommandType.Text
     
            Dim dr As OracleDataReader = cmd.ExecuteReader()
            dr.Read()
            Try
                For Each rowRequetes As DataRow In dsRequete.Tables(0).Rows
     
                    LaRequete = rowRequetes("RequeteSQL")
                    LaRequete = LaRequete.Replace("currentUser", Main.CurrentUser)
     
     
                Next
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    normalement ce code doit me recuperer ce que j'adans oracle pour le mettre dans sql server mais ca marche pas.esque quelqun peut me donner un coup de main?

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    C'est à quel moment que tu exécutes une requête vers la base SqlServer ? Je n'en vois pas.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    normalement la requte seql c'est une requete ki est dans "requetesql"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaRequete = rowRequetes("RequeteSQL")
    mais le probleme c'est que je ne sais pas comment recupere le resultat du dataset pour mettre ca dans la table sql,je ne sais pas comment ecrire la requete.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Donc si j'ai bien compris, "LaRequete" contient la requête à exécuter sur la base SqlServer.
    Dans ce cas là, tu peux t'inspirer de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Créé la connexion
    IDbConnection conn = new SqlConnection(tachainedeconnexionverssqlserver);
    // Ouvre la connexion
    conn.Open();
    // Crée la requête
    IDbCommand requete = conn.CreateCommand();
    requete.CommandText = LaRequete;
    // Exécute la requête
    int nombreLignesImpactees = requete.ExecuteNonQuery();
    // Ferme la connexion
    conn.Close();
    J'utilise ExecuteNonQuery à la place de ExecuteReader car je considère que tu exécutes une requête de type INSERT/UPDATE/DELETE.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    j'ai change le executereader en execute scalar pour kil me renvoie ke la premier ligne et j'ai mis stored procedure pour qu'il execute la requete sql c'est a dire recuperer des données d'une base oracle voici mon nouveau code:
    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
     Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
                        + "(ADDRESS=(PROTOCOL=TCP)(HOST= SM65CVDF)(PORT=1521)))" _
                        + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OSMOSE)));" _
                        + "User Id=OSMOSE;Password=OSMOSE;"
     
            Dim sdaRequetes As New SqlDataAdapter
            Dim dsRequete As DataSet
            Dim laRequete As String
            Dim conn As New OracleConnection(oradb)
            conn.Open()
     
            Dim cmd As New OracleCommand
            cmd.Connection = conn
            cmd.CommandText = "select EVENT_CLIENT from EVENEMNT"
            cmd.CommandType = CommandType.StoredProcedure
     
            Dim dr As OracleDataReader = cmd.ExecuteScalar()
            dr.Read()
            sdaRequetes.Fill(dsRequete)
     
            Try
                For Each rowRequetes As DataRow In dsRequete.Tables(0).Rows
     
                    laRequete = rowRequetes("RequeteSQL")
                    laRequete = laRequete.Replace("currentUser", Me.CurrentUser)
     
     
                Next
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
            conn.Dispose()
    mais cette fois il m'affiche l'erreur suivante:
    La commande SQL ne se termine pas correctement

    je ne sais pas koi faire.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Le commandType doit être 'CommandType.Text' car ce n'est pas une procédure stockée que tu utilises mais une requête SQL.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    alors je me suis trompe il fallait ke je garde commendtype = command.text au lieu de storedproc.mais j'ai tjrs une autre erreur ka kan il arrrive a cet ligne

    dr.Read()

    il m'affiche l'erreu suivante.
    La référence d'objet n'est pas définie à une instance d'un objet.

    j'aarive pas a savoir ce ke ca veut dire.

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu devrais essayer avec ExecuteReader, plutot que ExecuteScalar.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    tu as raison ca bloque plus a cette ligne la mais mnt vers la suivante au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdaRequetes.Fill(dsRequete)
    en m'affichant l'ereur suivante
    La valeur ne peut pas être null.
    Nom du paramètre : command

    taurai pas une petite idee

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu dois affecter la propriété Command du dataadapter pour lui spécifier la requête à exécuter, car pour l'instant, il n'y a pas de requête associée au DataAdapter, il ne sait donc pas quoi exécuter quand tu fais un Fill. C'est la cause de ton message d'erreur.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    exuse moi si je te demande detre un peu plus precis,je ne fais du VB.net que depuis un mois. donc esque tu pourai me dire keske je devrais affecter a command du dataadapter

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim dr As OracleDataReader = cmd.ExecuteScalar()
    dr.Read()
    ne sert à rien dans ton cas, tu peux le remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdaRequetes.SelectCommand = cmd

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    merci beaucoup tave bien raison.mais mnt jai un autre probleme au nveau du try catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each rowRequetes As DataRow In dsRequete.Tables
     
                    laRequete = rowRequetes("RequeteSQL")
                    laRequete = laRequete.Replace("currentUser", Me.CurrentUser)
    ce que je veu faire c'est recuperer la table oracle pour la mettre une table intermediaire avant de la mettre dans une tablesql.car le but en fait c'est de recuperer une table d'une base oracle et la mettre dans une table d'une base sql.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    tjrs la?

  15. #15
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi utiliser une table intermédiaire alors ? Pourquoi ne pas ajouter les données dans la table SqlServer au fur et à mesure que tu lis les données dans la table Oracle ?

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    je ne savais pas kon pouvait faire ca mais coment on peut ajouter ces données a fur et mesure tu peux me donner une idee sil ta plait tu me rendrais un grand car je galere a fond.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    d'apres mes recherches,apres avoir recupere ma table d la base oracle que je mets dans un dataset,je dois a partir de ce meme dataset recupere la table que je peux mettre dans la base sql avec un sqladapter qui est prend la table que j'ai dans mon dataset et la mets dans une autre table stockee dans ma base de donnée sql.voici mon code
    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
    Dim connectionSQL As New SqlConnection
     
            '*** vidage de la table TOMBEE
            executeRequete("delete from TOMBEE")
            '*** mise à jour TOMBEE à partir HISTORIQUE_COURRIERS
            'executeRequete("insert into TOMBEE(CODCLI,NUMCRED,NUMTIR,DATEECH,PROVENANCE) SELECT CODCLI,NUMCRED,NUMTIR,DATEECH,1 as provenance from HISTORIQUE_COURRIERS where DATEECH between '01/04/2007' and '31/05/2007'")
     
            '*** recuperation des données de la base oracle 
            Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
                         + "(ADDRESS=(PROTOCOL=TCP)(HOST= SM65CVDF)(PORT=1521)))" _
                         + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OSMOSE)));" _
                         + "User Id=OSMOSE;Password=OSMOSE;"
     
     
     
            Dim sdaRequetes As New OracleDataAdapter
            Dim dsRequete As New DataSet
            'Dim laRequete As String
            Dim conn As New OracleConnection(oradb)
            conn.Open()
     
            Dim cmd As New OracleCommand
            cmd.Connection = conn
            cmd.CommandText = "select EVENT_CLIENT from EVENEMNT"
            cmd.CommandType = CommandType.Text
     
            sdaRequetes.SelectCommand = cmd
            sdaRequetes.Fill(dsRequete)
     
     
            Dim adapter As New SqlDataAdapter()
            adapter.SelectCommand = New SqlCommand
            adapter.SelectCommand.Connection = New SqlConnection
            adapter.SelectCommand.Connection.Open()
            adapter.Fill(dsRequete)
            executeRequete("insert into TOMBEE select EVENT_CLIENT from EVENEMNT")
    executerequete est une procdedure stockee que j'ai crée et qui execute les requete sql.quand je compile mon code j'ai l'erreu suivante:
    "La propriété ConnectionString n'a pas été initialisée"

    je dois avoir certaineùent une erreur dans mon code mais je ne sais koi.as tu une idee.

  18. #18
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adapter.SelectCommand.Connection = New SqlConnection
    Tu dois passer une chaine de connexion dans le constructeur de SqlConnection. L'erreur vient du fait que pour l'instant, il ne sait pas se connecter car il n'a pas de chaine de connexion (ConnectionString).

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 122
    Points : 37
    Points
    37
    Par défaut
    mais je dois passer koi comme chaine de connexion????

  20. #20
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Ben celle de ta base SqlServer

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2009, 18h45
  2. Exportation données excel vers sql server 2005, en ASPX?
    Par Micke7 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/01/2007, 14h57
  3. [debutan] migration de données Oracle vers SQL SERVER 2000
    Par Mil00se dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/08/2005, 17h44
  4. Migration de données Oracle vers SQL server
    Par joul's dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 16/02/2005, 15h05
  5. Exporter une base MSDE vers SQL Server
    Par Noodles dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/01/2005, 13h56

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