#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" ??
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