Pages: 1
- Sujet précédent - Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area) - Sujet suivant
#1 Thu 11 December 2014 09:35
- SylvaDEES
- Participant actif
- Date d'inscription: 12 Jul 2012
- Messages: 83
Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Bonjour,
je dispose de 208 tables sur lesquelles je dois : créer/ajouter une colonne "surface" et y ajouter la surface en m² de chaque objets.
J'aimerais, si possible, automatiser cette tâche par l'intermédiaire d'une seule requête SQL à lancer dans la fenêtre FMB, cependant je sèche
sur la façon de la rédiger. Je souhaiterais passer par :
ALTER TABLE table1,....,....,.....,table208
ADD colonne"Surface", type colonne,......
UPDATE table1,....,....,.....,table208
SET colonne"Surface"=CartesianArea
En vous remerciant pour vos suggestions.
Hors ligne
#2 Thu 11 December 2014 11:01
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Bonjour,
Vous devriez y arriver avec scriptgen. Tapez ce mot-clé dans la barre de recherche.
Le principe : mettez au point votre commande (un script) pour une table, puis remplacer le nom de votre table par une variable qui va reprendre les noms de vos 208 tables dans scriptgen, qui va vous produire les 208 scripts à copier coller dans la FMB.
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#3 Thu 11 December 2014 11:45
- SylvaDEES
- Participant actif
- Date d'inscription: 12 Jul 2012
- Messages: 83
Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Bonjour,
autant pour moi, ce n'est finalement pas si compliqué.
J'ai édité un script de ce type avec Notepad++ et qui fonctionne bien:
Open Table "Chemin d'accès de ma_Table"
Alter table "ma_Table" (add SURFACE Integer)
Update ma_Table Set SURFACE=CartesianArea(obj, "sq m")
Commit Table ma_Table
Petites questions cependant, de la part d'un novice en FMB:
. dans ce cas précis, ne peut-on pas s'affranchir de l'ouverture des Tables dans Mapinfo ??
. quelle est l'interface d'écriture la plus adaptée : Notepad ++ ou Scriptgen ??
SylvaDEES
Hors ligne
#4 Thu 11 December 2014 13:28
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Salut,
. dans ce cas précis, ne peut-on pas s'affranchir de l'ouverture des Tables dans Mapinfo ??
Non, et il faut bien le chemin de ta table pour la modifier.
. quelle est l'interface d'écriture la plus adaptée : Notepad ++ ou Scriptgen ??
Je ne comprends pas trés bien la question.
D'un côté tu as un éditeur de texte et de l'autre un executable qui te dupliques des lignes de code.
Je ne connais pas bien Notepad ++, ce qui est bien c'est qu'il a une coloration syntaxique pour MapBasic mais je n'ai jamais trouvé de fonction pour dupliquer des requêtes via une liste.Tu peux peut être m'éclairer?
Maintenant pour ton script initial, je rajouterais un:
close table TaTable Interactive
Celà évitera que tu aies 208 tables d'ouvertes
Une autre observation -> la FMB est limitée en nombre de lignes donc 208 x 5 lignes de code celà fait beaucoup.
Procède par lots.
A+
Joël
Hors ligne
#5 Thu 11 December 2014 16:19
- SylvaDEES
- Participant actif
- Date d'inscription: 12 Jul 2012
- Messages: 83
Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Bonjour Spacejo,
tout d'abord merci pour tes réponses et ton expertise.
J'ai ajouté la ligne Close Table comme indiqué, cela complète à 100% l'objectif de la requête.
J'avoue ne pas avoir encore découvert et pris en main Scriptgen, ce qui ne serait tarder. Par conséquent je ne suis, pour le moment,
pas suffisamment compétent pour répondre à ta question.
Sinon, oui, Il y a bien une coloration syntaxique pour MapBasic dans Notepad++
Concernant le nombre de lignes supportées par la fenêtre FMB, j'ai donc coupé la poire en deux, et pas de problèmes particuliers,
les requêtes se sont parfaitement exécutées.
SylvaDEES
Hors ligne
#6 Wed 14 January 2015 08:26
- Betula
- Participant occasionnel
- Date d'inscription: 18 Sep 2005
- Messages: 20
Re: Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area)
Bonjour,
La fenêtre mapbasic est utile pour développer du code ou tester des commandes.
Pour faire des traitements répétitifs nombreux il est préférable de recourir à un fichier .wor.
Il n'y a pas de limite du nombre de lignes.
L'astuce est décrite dans l'aide de Scriptgen.
D'ailleurs celui ci génère des fichiers wor fonctionnels.
Salutations
BeTuLa
BeTuLa
Hors ligne
Pages: 1
- Sujet précédent - Requête SQL sur plusieurs tables (Alter Table+Addcolumn+Update Area) - Sujet suivant