banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 19 May 2010 17:02

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

[Map Basic] "Fetch" par tranche de "record"

Bonjour à tous,

J'ai une table qui est très volumineuse (5millions d'entrées) j'aimerais la séparer en plusieurs petites tables disons 500 000, Mais le volume de cette table varie lors de mise a jour bi-annnuel.

J'aimerais avoir un code qui me permette de selectionner de 1 à 500 000 premier objet de la table et le mettre dans une table Puis sélectionner 500 001 à 1 000 000 et ainsi de suite.

En plus il me faut une condition just avant exemple

if tablerecord < 500 000 then n=0
elseif tablerecord > 500 000 and tablerecord < 1 000 0000 then n = 1
elseif tablerecord > 1 000 000 and tablerecord < 1 500 0000 then n = 2
....
end if

Do while n=0

'....le code que je cherche pour placer mais 500 000 premier élément d'une table dans une nouvelle tables

n = n-1
Loop

merci
JF

Hors ligne

 

#2 Wed 19 May 2010 17:16

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [Map Basic] "Fetch" par tranche de "record"

Salut,

Pourquoi ne pas passer par les rowid

Code:

Dim Cmd as string
Cmd="select * from Table where Rowid between 0 and 500000 into selection1"
Run command Cmd

A+
Joël

Hors ligne

 

#3 Wed 19 May 2010 18:08

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [Map Basic] "Fetch" par tranche de "record"

Merci, ces se qui me fallait le fameux RowId,

Cela fonctionne bien or ne règle pas mon problème de départ.

En fait mon vrai probleme est le suivant :

J'ai un mbx qui me sert a enlevé les coquilles dans une liste d'Adresse, je serai volontier de la partager ensuite,

Quand vient le temps d'épurer les adresse d'un excel transformer en tables tout va très bien, il peu faire sa en 6min pour 15 000 adresse. Pour le même nombre d'adresse dans un fichier de routes (.tab), le temps explose a ...(je sais pas combien... j'annule trop long!)

J'ai penseer à faire "drop map" de cette tables mais le temps rest ridiculement encore long...Que pourrait causer la différence de temps? J'ai paker les 2 tables, eliminer les colonnes inutile les deux fichiers sont de même taille.

Je cherche avec vous
Merci
JF

Hors ligne

 

#4 Wed 19 May 2010 18:27

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [Map Basic] "Fetch" par tranche de "record"

Une soluce à ton problème est de découper ta table en de petites tables via le générateur de script puis un "run application" de ton .mbx sur toutes ces tables et enfin une recompilation de celles ci nettoyées en une seule.
Vu le traitement il me semble que c'est faisable.En plus toutes tes tables ont la même structure.
Tout le traitement se fera via la FMB bien sur.
Le générateur de script --> http://www.forumsig.org/attachment.php? … 1263298677
A+
Joël

Hors ligne

 

#5 Wed 19 May 2010 19:04

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Map Basic] "Fetch" par tranche de "record"

Bonjour
Contrairement à Spacejo, je ne saisis pas bien le "vrai problème"...peut être à cause des très nombreuses "coquilles orthographiques" ?? smile
Vous pouvez répéter la question... ?

Hors ligne

 

#6 Wed 19 May 2010 20:05

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [Map Basic] "Fetch" par tranche de "record"

Je devrai sans doute me diriger vers une solution semblables

Une question fondamental demeur, comment est-il possible qu'une table de plus faible taille, sans objet spatiale et ayant la même structure qu'une autre table beaucoup plus grosse prend plus de temps à enregistrer et apporter des modification via un update column?

Merci

Hors ligne

 

#7 Wed 19 May 2010 20:11

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [Map Basic] "Fetch" par tranche de "record"

@Maurice

En fait J'avais une table de 500 000 lignes et pour des raison que je croyais de traille mon code prennait beaucoup de temps à s'effectuer.

Pour palier au problème j'ai cru bon d'ajouter quelques lignes qui effectue mon code en bloc disons (50 000)

Donc sauvegarde mes 50 000 premiere ligne de ma table dans une autre table effectue le travaille et passe au prochain 50 000.

Bref j'ai essayer mais je ne crois pas sauver beaucoup de temps de cette façon mais j'essaie pareil.

De plus ce que je me suis appercu ces que en effectuant le meme code sur une table (venant d'un fichier excel) ayant le meme nombre de ligne voir plus, mon code s'effectue tres rapidement.  De plus la nouvelle table contient surment plus d'erreur que l'ancienne comme tu le soulève donc ne peu être la cause.

merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB