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

SQL Oracle Discussion :

ORA-00900 sur LOAD DATA INFILE [10g]


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Points : 6
    Points
    6
    Par défaut ORA-00900 sur LOAD DATA INFILE
    Bonjour à tous,

    Je suis chargé d'adapter un code VBA Excel qui doit charger un fichier TXT dans un SGBD. Initialement dans MySQL. Dorénavant dans ORACLE 10g.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set mybase = New ADODB.Connection
     
    mybase.ConnectionString = "Provider=msdaora;Data Source=xxxx;User Id=xxx;Password=xxxxx;"
    mybase.Open
     
    Set mycommande = New ADODB.Command
    mycommande.ActiveConnection = mybase
     
    mycommande.CommandText = "CREATE TABLE TOTO (SIRET varchar(14) primary key)"
    mycommande.Execute
     
    mycommande.CommandText = "LOAD DATA LOCAL INFILE " & Chr(34) & Replace(Mon_fichier, "\", "/") & Chr(34) & "INTO TABLE TOTO" 
    mycommande.Execute
    J'imagine que ce code devait fonctionner sous MySQL. Supposition, car je n'en sais rien. Ce que je sais, en revanche, c'est que sous Oracle, il ne fonctionne pas.
    Le LOAD DATA plante en :
    ORA-00900: invalid SQL statement
    Rien trouvé de probant sur la toile...


    Merci à vous

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Sans aucun doute parce que la commande LOAD DATA INFILE n'appartient ni au langage SQL normalisé ni au dialecte Oracle.

    Il ne te reste plus qu'à chercher ce qu'est sensée faire cette commande dans l'univers MySQL et cherche dans Oracle ce qui est comparable...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Eh ben me v'la bien !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    J'ai fini par trouver une solution.
    Je vous la livre pour les suivants qui, comme moi, s'arracheraient les cheveux sur ce problème :

    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
    SET mybase = New ADODB.Connection
     
    mybase.ConnectionString = "Provider=msdaora;Data Source=xxxx;User Id=xxx;Password=xxxxx;"
    mybase.Open
     
    SET mycommande = New ADODB.Command
    mycommande.ActiveConnection = mybase
     
    mycommande.CommandText = "CREATE TABLE TOTO (SIRET varchar(14) primary key)"
    mycommande.Execute
     
    "Import du fichier TXT dans EXCEL"
    Workbooks.OpenText Filename:=fichier, Origin _
    :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
    Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 2), _
    TrailingMinusNumbers:=True
     
    "On récupère l'adresse de la dernière ligne du tableau"
    Range("A1").Select
    der_row = ActiveCell.CurrentRegion.Row + ActiveCell.CurrentRegion.Rows.Count - 1
     
    For i = 1 To der_row
            strImport = Mid(Worksheets(Application.ActiveSheet.Name).Cells(i, 1).Value, 1, 14)
     
            mycommande.CommandText = "BEGIN INSERT INTO TOTO VALUES('" & strImport & "'); COMMIT; END;"
            mycommande.Execute
    Next i
    Pas forcément très beau, mais ça a l'avantage de fonctionner.
    Merci à ceux qui ont réfléchi à mon problème.

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

Discussions similaires

  1. [Oracle] [Oracle] Load data infile ORA-00900
    Par ipocompe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/05/2015, 16h29
  2. LOAD DATA INFILE sur un serveur
    Par MrJack14 dans le forum MySQL
    Réponses: 1
    Dernier message: 11/04/2010, 11h01
  3. Erreur sur LOAD DATA INFILE
    Par crazyday dans le forum Import/Export
    Réponses: 4
    Dernier message: 13/08/2009, 01h56
  4. LOAD DATA INFILE sur table avec AUTO_INCREMENT PRIMARY KEY ?
    Par ctobini dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/10/2007, 11h00
  5. Réponses: 5
    Dernier message: 18/04/2005, 12h38

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