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 :

Problème de type de données dans export sql


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut Problème de type de données dans export sql
    Bonjour,
    J'ai obtenu un export d'une base de données fait avec SQL Developer, mais malheureusement, l'export qu'a généré SQL Developer, contient des données qui devrait être de type NUMBER, mais qui malheuresement sont sous la forme : "10.3", donc à cause des guillemets, elles sont interprétées comme des string, varchar par la base Oracle.

    Etant-donnés l'énorme quantité de données que l'export contient, j'aimerais pouvoir avoir un script, ou une expression régulière qui détecte chaque chaîne du fichier, qui ne contienne que des chiffres, des décimaux, mais pas de texte. Et ainsi de remplacer son contenu par le chiffre, ou le décimal de la chaine, mais sans le guillemets cette fois.

    Voilà la requête de création d'une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE "PERS"."TMP_MSG" 
       (	"NOM" VARCHAR2(21 BYTE),
    	"NUMERO" NUMBER(15,0),
    	"NUMERO_IMP" NUMBER(15,0)
       ) SEGMENT CREATION IMMEDIATE 
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
      NOCOMPRESS LOGGING
      STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "PERS_DATA" ;

    Et voilà la requête d'insertion de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into PERS.TMP_MSG (NOM,NUMERO,NUMERO_IMP) values ('JEAN','2','-1');
    Quelqu’un pourrait-il m'aider à trouver une solution pour m'éviter les erreurs ORA-01722 invalid number à la chaine.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Ben si tu mettais des nombre au lieu de mettre des chaines de caractères, ça irait mieux !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into PERS.TMP_MSG (NOM, NUMERO, NUMERO_IMP) values ('JEAN', 2, -1);
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Ben si tu mettais des nombre au lieu de mettre des chaines de caractères, ça irait mieux !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into PERS.TMP_MSG (NOM, NUMERO, NUMERO_IMP) values ('JEAN', 2, -1);
    A +
    Merci pour ta réponse @SQLpro, j'en suis parfaitement au courant, mais le problème est que l'export contient des millions de lignes. Et cet export est généré avec l'outil d'export de base de données de SQL Developer, et c'est cet outil qui à un problème d'incohérence entre la requête de création de la table qu'il génère lui-même et qui est de type NUMBER pour certaines colonnes. Et la requête d'insertion de données qu'il génère aussi lui-même mais qui n'est pas au bon format pour les colonnes de type NUMBER.
    Parce que moi personnellement, j'aurais bien entendu mis un nombre sans guillemets, et je n'aurais pas créé cette discussion. Mais là je suis obligé de faire avec cet export qui pour les millions de lignes d'insertions, me mets pour des nombres des guillemets autour.

    D'où ma problématique justement.

    Je ne sais donc pas comment je peux procéder pour réussir mes insertions, puisque je ne peux pas aller à la main, retirer les guillemets à mes millions d'insertions.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Aucune idée pour SQL Developer ajoute des quotes autour des valeurs numériques. Pour remédier, essaie de changer le séparateur en début de session, avant l'exécution des tes inserts:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter SESSION set NLS_NUMERIC_CHARACTERS = ',.';

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Aucune idée pour SQL Developer ajoute des quotes autour des valeurs numériques.
    Parce que ce sont les options par défaut pour certains formats d'exportation et que si l'on se contente de cliquer "OK" dans tous les dialogues sans lire et changer ce qui est proposé...

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    Parce que ce sont les options par défaut pour certains formats d'exportation et que si l'on se contente de cliquer "OK" dans tous les dialogues sans lire et changer ce qui est proposé...
    Je n'ai pas vu d'options pour changer justement, où alors c'est bien caché.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Aucune idée pour SQL Developer ajoute des quotes autour des valeurs numériques. Pour remédier, essaie de changer le séparateur en début de session, avant l'exécution des tes inserts:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter SESSION set NLS_NUMERIC_CHARACTERS = ',.';
    Finalement, après persévérance, cette solution à résolue mon problème.

    Je vous remercie tous pour votre aide

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

Discussions similaires

  1. [AC-2007] Problème types de données dans variable
    Par py86acces dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/02/2019, 10h34
  2. [2005] Problème type de données dans requête récursive
    Par patlepirate dans le forum Développement
    Réponses: 16
    Dernier message: 04/04/2014, 15h16
  3. Exporter un type de données dans une DLL
    Par kmaniche dans le forum Visual C++
    Réponses: 2
    Dernier message: 18/10/2013, 13h41
  4. Problème insertion et modification données dans SQL Server CE
    Par Lucas Panny dans le forum Accès aux données
    Réponses: 15
    Dernier message: 09/08/2011, 09h47
  5. Changement types de données dans une requete SQL ACCESS
    Par Moutonstar dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/11/2008, 12h14

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