Informix SQL - Перечислите все поля и таблицы

Вы могли сохранить события как повторение, и если конкретный экземпляр был отредактирован, создайте новое событие с тем же идентификатором события. Тогда при поиске события, ищите все события с тем же идентификатором события для получения всей информации. Я не уверен, прокрутили ли Вы свою собственную библиотеку события, или если Вы используете существующий, таким образом, это не может быть возможно.

19
задан Brian Tompsett - 汤莱恩 1 January 2017 в 10:03
поделиться

2 ответа

Используя предпочтительную нотацию JOIN:

SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
  FROM "informix".systables  AS t
  JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
 WHERE t.tabtype = 'T'
   AND t.tabid >= 100
 ORDER BY t.tabname, c.colno;

или устаревшую нотацию соединения-в-where-clause:

SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
  FROM "informix".systables AS t, "informix".syscolumns AS c
 WHERE t.tabid = c.tabid
   AND t.tabtype = 'T'
   AND t.tabid >= 100
 ORDER BY t.tabname, c.colno;

Предполагая, что вы используете достаточно последнюю версию IDS, вы можете заказать по столбцам, не указанным в списке выбора. Если вы получаете жалобы, добавьте столбцы упорядочивания в список выбора.

Критерий соединения очевиден; tabtype = 'T' перечисляет только таблицы, но не представления, синонимы и другие подобные элементы, перечисленные в systables; tabid> = 100 перечисляет только таблицы, созданные явно в базе данных, а не в системном каталоге.

Это не включает информацию о типе - если вы этого хотите, вам нужно проделать немного больше работы. Вы найдете файл $ INFORMIXDIR / etc / xpg4_is.sql , который содержит грубое приближение к старой версии информационной схемы XPG4 (стандарт X / Open) (отсюда и название файла). Там, существуют функции и т. д. для декодирования информации о типе из syscolumns.coltype и syscolumns.collength в узнаваемые строки. Однако я сильно подозреваю, что он не обрабатывает типы DISTINCT или другие типы, определяемые пользователем. Я буду рад, если я ошибаюсь, но ... Если вы добавите соответствующие части этого файла в свою базу данных, вы также сможете получить информацию о типе.

Также обратите внимание, что все команды INFO в ISQL и DB-Access моделируются во внешнем интерфейсе, а не выполняются на сервере IDS. По сути, программы принимают запрос и преобразуют его в более сложный оператор SQL. См. Код в файле sqlinfo.ec , который является частью SQLCMD (доступен в Архиве программного обеспечения IIUG ), чтобы узнать, как моя программа SQLCMD обрабатывает операторы INFO. (Запись:

32
ответ дан 30 November 2019 в 03:48
поделиться

Использовать таблицу syscolumns. Такая информация описана в IBM Informix Guide to SQL

. Я сделал простые утилиты Python, которые показывают информацию о схеме для Informix , Oracle и PostgreSQL . Они полезны, если вам нужно сравнить базы данных.

1
ответ дан 30 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: