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

Développement SQL Server Discussion :

Séparation en sous échantillon de même nombres de lignes


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Points : 41
    Points
    41
    Par défaut Séparation en sous échantillon de même nombres de lignes
    Bonjour à tous,

    J'ai cherché mais n'ai pas trouvé, d'où ce message :

    J'ai une grande table (75 colonnes x 50 000 000 lignes avec une clé primaire ID autoincrémentée, des clés étrangères et d'autres types de données) dont je veux extraire des parties pour les traiter par ailleurs. Je cherche à générer des sous parties pour faciliter la gestion des fichiers de données (si j'ai 2 000 000 de lignes à extraire, je voudrais en faire 10 sous parties de 200 000 lignes). Ces 2 000 000 de lignes sont réparties dans la table si bien que je ne connais pas ou elles se situent précisément.

    Mon idée était de passer par une table temporaire dans laquelle j'aurais renseigné les ID correspondant au début de chaque centaine de milliers de données correspondant aux sous parties. Cette table m'aurait permis de générer les limites de ma requête de sélection de mes sous parties pour les exporter. Par ailleurs, je n'ai pas envie (vu les volumes de données) de remplir une autre table avec l'ensemble des données que je viderai au fur et à mesure (même si c'est une possibilité), je préfèrerai faire autrement.

    J'ai essayé différents codes mais rien ne fonctionne.

    En clair, j'ai une table avec :
    Id (int), Mach_num (int), x, y, z...

    d'ou je voudrais tirer une autre table résultat :
    Sous_partie_N° id_début
    1 3157825
    2 4159250
    3 6584253

    et ainsi de suite (chaque sous partie - par exemple entre 3157825 et 4159250 -correspondant à 200000 enregistrements).

    Je vous remercie par avance de votre aide

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Hello,

    si tu veux juste découper ta table logiquement, tu peux utiliser une fonction de partitionnement, disponible depuis SQL Server 2005 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NTILE(10) OVER (ORDER BY NEWID()) as [partition]
    ...
    attention, c'est lent... mais retourner toutes tes lignes, c'est lent aussi.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Points : 41
    Points
    41
    Par défaut Précision
    Bonjour Rudib,

    Merci beaucoup, effectivement cela fonctionne. Par contre, je souhaiterais définir non pas le nombre de partitions mais le nombre de lignes à l'intérieur des partitions, parce que je ne connais pas forcément le nombre total de lignes.

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Quelle version de SQL Server stp ?
    en 2012 tu peux utiliser OFFSET FETCH :
    http://technet.microsoft.com/fr-fr/l.../gg699618.aspx

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 31
    Points : 41
    Points
    41
    Par défaut Version SQL Server
    J'utilise 2008R2 et 2012.

    Je vais regarder ça. Merci encore.

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Pour 2008R2 (avec une vue système de catalogue comme table exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE @nb int, @offset tinyint
     
    SET @nb = 1000
    SET @offset = 0
     
    WITH cte AS (
    	SELECT ROW_NUMBER() OVER (ORDER BY object_id) as rownum, *
    	FROM sys.objects
    )
    SELECT TOP (@nb) *
    FROM cte
    WHERE rownum > (@offset * @nb)

Discussions similaires

  1. UPDATE pas même nombre de lignes que SELECT
    Par CinePhil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/11/2008, 17h07
  2. 2 sous états non liés: même nombre enreg
    Par charliejo dans le forum IHM
    Réponses: 2
    Dernier message: 11/09/2007, 19h58
  3. Réponses: 1
    Dernier message: 01/08/2007, 22h10
  4. Sous-Formulaire nombre de lignes vides ?
    Par popo68 dans le forum IHM
    Réponses: 25
    Dernier message: 11/12/2006, 10h28
  5. [Debutant(e)]Calcul du nombre de ligne sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/12/2004, 09h53

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