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

Oracle Discussion :

SQL*PLUS requete de plus de 40000 caractères


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut SQL*PLUS requete de plus de 40000 caractères
    Bonjour,
    je dois faire une migration d'un serveur 10GR2 (linux), vers un autre serveur 10Gr2, jusque là rien de faulichons, sauf que.....

    Je dois passer par des requêtes et en SQL*PLUS.

    Et forcément comme un malheur n'arrive jamais seul, il y des blobs de 40-45 000 octets.

    Donc j'ai mes requetes qui sont très supéreures à un varchar2 (max 32765).

    Et je n'ai plus d'idée pour passer ce cap.

    Je suis passé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    declare
    mavariable CLOB ;
    mais je suis bloqué pour son execution.

    Si vous avez une idée, ou alors j'ai peux être loupé un truc.

    Pierre-Jean

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Si vous devez exécuter dynamiquement du code source SQL dont la taille est supérieure à 32K, vous pouvez essayer d'utiliser ceci ( d'après http://download-uk.oracle.com/docs/c...l2.htm#1004425)

    The PARSE procedure also supports the following syntax for large SQL statements:
    Note:

    The procedure concatenates elements of a PL/SQL table statement and parses the resulting string. You can use this procedure to parse a statement that is longer than the limit for a single VARCHAR2 variable by splitting up the statement.

    DBMS_SQL.PARSE (
    c IN INTEGER,
    statement IN VARCHAR2S,
    lb IN INTEGER,
    ub IN INTEGER,
    lfflg IN BOOLEAN,
    language_flag IN INTEGER);

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    excusez j'ai oublié de préciser que les deux serveurs ne discutent pas ensemble.

    Je passe donc par un fichier qui contient mes requêtes, donc je peux me permettre plein de chose, sauf que SQL*Plus lui n'aime pas les lignes de plus de 2499 caractères.

    Donc je les concaténais des blocks que 500 char dans une variable varchar2 et ma requête passais bien.

    sauf que là, je suis contrains à des lignes SQL*plus < 2499 et des variables contenant < 32767.

    Je vais essayé cette méthode en passant par plusieurs varaibles de 32000 chars, et on verra ce que ca fera.

    Merci

    Pierre-Jean

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    et pourquoi ne pas faire un export/import standart ??

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    je ne peux rien faire en standart car je ne dois pas exporter toutes les données.
    Seulement une partie.

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    tu peux utiliser le paramêtre QUERY de l'export pour inclure une clause WHERE. Sinon, tu importes tout et tu supprimes ce qui n'est plus nécessaire

  7. #7
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    il ne serait pas plus simple de faire un export/import standard dans un schéma "tampon" puis de faire le SQL selectif au sein de la base finale avec des insert-select entre le schéma tampon et le schéma final ?
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

Discussions similaires

  1. Requete XPATH plus SQL
    Par mourbare dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/04/2009, 15h59
  2. Réponses: 8
    Dernier message: 29/09/2008, 20h11
  3. perl plus requete sql
    Par bakka dans le forum SGBD
    Réponses: 5
    Dernier message: 20/07/2007, 17h58
  4. JDBC : requete de plus de 4000 caractères
    Par Endymion222 dans le forum JDBC
    Réponses: 1
    Dernier message: 01/12/2005, 17h00
  5. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52

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