2010-01-12 23 views
2

J'ai un problème où un table (fichier) est configuré pour retourner la colonne foo sur LIST table et SELECT * FROM table. J'ai besoin de connaître les autres colonnes possibles dans table. Je suis assez sûr que cela a été réalisé en définissant @ (définition de comportement de LIST non qualifié), et @select (définition de comportement de * avec très SELECT) mais je ne sais pas comment obtenir la liste complète des colonnes. Comment puis-je lire le schéma de la table dans uvsh et interroger les colonnes de la table physique?Comment trouver la liste des colonnes dans UniVerse avec RetrieVe ou SQL?

Exécution LIST.ITEM sur le tableau me montre une liste de tous les numéros de champ et de valeurs, mais comment puis-je trouver le DISPLAY NAME et le nom de colonne des champs numérotés?

Répondre

2

A previous answer I received on SO avait mentionné LIST DICT comme un moyen d'obtenir certaines métadonnées. C'était en fait ce que je pensais que je voulais. La documentation officielle utilise LIST DICT; Cependant, sur mon système, je pensais qu'il n'y avait pas LIST DICT, il y a. Cela nécessite un argument de fichier. Il était tout simplement pas une commande séparée soit (plusieurs commandes ont des espaces en eux), au lieu de (UniVerse 10.1) liste est définie comme:

LIST [ DICT | USING [ DICT ] dictname ] filename [ records | FROM n ] 
[ selection ] [ output.limiter ] [ sort ] [ output ] [ report.qualifiers ] [TOXML 
[ELEMENTS] [WITHDTD] [XMLMAPPING mapping_file]] 

Donc, en résumé, le même verbe (LIST) pour rechercher des données est utilisé pour interroger le schéma, avec le même fichier de destination.

origine quand je présumais il n'y avait pas un LIST DICT je suis allé chercher dans le fichier COV avec récupérer à l'aide LIST VOC WITH NAME MATCHING LIST... j'ai pu identifier un même nom LIST.DICT, un paragraphe qui affiche le contenu de DICTIONARIES triées par type d'enregistrement . Cela a fait exactement ce que je voulais, sauf le résultat était une liste ingérable de 400 lignes. Je ne vois pas la documentation pour LIST.DICT n'importe où, et il semble que qualificatifs d'enregistrement et qualificatifs de rapport ne fonctionnent pas sur le LIST.DICT comme ils le font sur LIST. Tout cela était vrai et a aggravé ma confusion, dans le langage UniVerse: LIST.DICT est une phrase, une déclaration stockée, LIST est le verbe dont j'avais besoin.

donc maintenant à mes questions:

Toute idée sur la façon de rendre la sortie de LIST DICT gérable?

Vous pouvez utiliser le qualificatif de rapport et indiquer explicitement les colonnes en utilisant la syntaxe positionnelle F# ou en indiquant les noms des colonnes.

LIST DICT <file> <columns> 

sur mon système, vous pouvez obtenir une liste des noms de champs et leurs noms d'affichage par exemple en émettant

LIST DICT <file> NAME 

Le nom vient du dictionnaire maître , qui peut être interrogé en utilisant LIST DICT DICT.DICT.

Maintenant, je peux voir les champs dans une belle liste (assez propre), mais je n'ai pas la moindre idée de la façon d'interroger un fichier pour l'ensemble de ses champs.

2

Voici les varients de base:

LIST DICT foo NAME 

SELECT @ID, NAME FROM DICT foo; 

Ils vous donneront un emplacement physique qui correspond au verbe LIST-ARTICLE:

SORT DICT foo WITH TYPE EQ "D" BY LOC LOC NAME 

SORT DICT foo WITH TYPE EQ "D" BY LOC LOC NAME TOXML 

Notez que le "nom de la colonne" ou @ID est affiché par défaut lors d'une LISTE ou d'un TRI. TOXML peut être utile, mais d'autres fonctions XML sont intégrées.

1

Dans Univers, chaque fichier est associé à un fichier de dictionnaire. Le fichier de dictionnaire est fondamentalement juste un fichier de données et peut être traité exactement comme un fichier de données pour une variété de buts. Il y a 3 choses qui rendent un fichier de dictionnaire spécial:

  1. Vous y accédez via le mot-clé "DICT" devant le nom du fichier de données.
  2. La commande LIST (et les commandes associées) l'utilisera par défaut pour traiter le fichier de données associé.
  3. Sa structure est définie par le fichier DICT.DICT, que vous devez suivre pour que l'élément 2 ci-dessus fonctionne.

Généralement, les dictionnaires sont gérés manuellement par les programmeurs et les administrateurs de base de données. Il n'y a aucun contrôle dans Univers pour garantir que les enregistrements DICT sont créés pour chaque champ dans le fichier de données associé et aucune raison que vous ne pouvez pas avoir plusieurs enregistrements DICT pour chaque champ. Les éléments du dictionnaire sont utilisés pour contrôler le formatage et les conversions. Il est donc normal d'avoir plusieurs éléments DICT pour chaque champ de données.

Les enregistrements de dictionnaire peuvent également joindre des champs de données, effectuer des opérations sur plusieurs champs et récupérer des données d'autres fichiers. Donc, parfois, il n'est même pas clair à quel champ de données un enregistrement DICT se rapporte réellement.

La seule façon de trouver une liste simple d'éléments de dictionnaire qui correspondent à un fichier de données est par inspection. Utilisez la commande LIST DICT {nomfichier} et trouvez les entrées avec le moins de manipulations de données dans les champs de formatage.

0

Certaines déclarations plus utiles qui pourraient vous être utiles:

SORT DICT nom (ce qui est la même liste, sauf le résultat est trié)

SORT SEULEMENT DICT nom de fichier (ce affiche uniquement le nom du dictionnaire)