Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Есть таблица, и нужно получить информациию о её полях одним запросом... 1 - номер, 2 - имя, 3 - тип_данных. Проблема с запросом к системным таблицам Postgre... (вместо 41587 впишите номер любой вашей таблицы) Код: plaintext 1. 2. 3. 4. 5. 6. 7. Запрос работает, НО! Если встречается поле у которого тип int2, то запрос возвращает не одну, а две! строки с для этого поля с одинаковым номером, в одной указан тип _int2 , а в другой int2vector . Так как узнать правильный тип, тот что был указан при создании поля ??? Help!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2006, 19:01 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
savrock... Если встречается поле у которого тип int2, то запрос возвращает не одну, а две! строки с для этого поля с одинаковым номером, в одной указан тип _int2 , а в другой int2vector . Так как узнать правильный тип, тот что был указан при создании поля ??? Help!!! Наверное у одной из них attisdropped = True :-) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2006, 21:54 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
barry Наверное у одной из них attisdropped = True :-) attisdropped оказались все False... но на будущее я добавил и это условие, спасибо! Мегапомогла эта строчка из твоего примера! barry Код: plaintext Оказывается в моем запросе я ошибся в условии объединения таблиц. Так сказать, объединил по мусору и получил левые строки, странно что результат выглядел почти как правильный. Правильный запрос теперь работает нормально! Код: plaintext 1. 2. 3. 4. Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2006, 01:04 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Лучше пользоваться information_schema. Системные таблицы меняются от версии к версии, а information_schema входит в стандарт SQL. Либо использовать функции получения метаданных, которые предоставляет драйвер (ODBC/JDBC/DBI). Если конечно не требуются специфичные для PostgreSQL метаданные. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 03:31 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
> Лучше пользоваться information_schema. Системные таблицы меняются от версии к версии, а information_schema входит в стандарт SQL. Либо использовать функции получения метаданных, которые предоставляет драйвер (ODBC/JDBC/DBI). Если конечно не требуются специфичные для PostgreSQL метаданные. > SELECT ordinal_position, column_name, data_type > FROM information_schema.columns > WHERE table_name='table1' > ORDER BY 1; В общем случае - да. Я собственно с этого и начинал, и даже information_schema есть не только в PostgreSQL. Но... все information_shema страдают тем, что это как правило view. А колонки как правило получают по отдельной таблице. И далее при выборке как правило мы получаем чтение всей записей из information_schema и потом фильтровку по таблице, а не оптимальное чтение по ключам, т.е. приличные тормоза. Запрос на системных таблицах отрабатывает намного быстрее, особенно это заметно когда нам надо извлечь информацию по всем таблицам (поля по каждой отдельно), например при извлечении метаданных. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 15:54 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
На самом деле медленные VIEW-ы для моей задачи не проблема. Просто я сейчас разрабатываю структуру новой базы и не нашел ни одной программы для визуализации моих таблиц и отношений внешних ключей в таблицах. А-ля MS Access "схема данных". Быстренько/страшненько написал на Си себе такую программку (скриншот я прилагаю). А недавно скачал примеры баз данных http://pgfoundry.org/projects/dbsamples , открыл и увидел глюки с полями в своей проге, некоторые поля (int2, int8) повторялись аж по 3 раза :) Это была та самая ошибка в запросе к системным таблицам. Вот тот страшненький запрос... Код: plaintext 1. 2. 3. 4. 5. 6. Ну, а на будущее, если конечно до этого руки дойдут, надо будет переделать под выборку из information_schema. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 21:23 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Извини за наглость :-) А опенсоурснить програмку не желаешь? Проектик маленький на PgFoundry? Люди спасибо скажут ;-) Без наездов, просто пожелание. У меня, например, силенок не хватить "набросать" такую програмку "быстренько/...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2006, 11:49 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Funny_FalconИзвини за наглость :-) А опенсоурснить програмку не желаешь? Проектик маленький на PgFoundry? Люди спасибо скажут ;-) Без наездов, просто пожелание. У меня, например, силенок не хватить "набросать" такую програмку "быстренько/...". Мне совершенно, не жалко отдать ее людям :) Но , я не программист (не считаю себя таковым), и программы пишу исключительно для себя, быстро и "страшно" некрасиво, c поддавками и ограничениями. Конкретно под текущую свою задачу. И мне стыдно демонстрировать "исходник-лажу" :( Могу отдать бинарник, как он есть, 19Кб в архиве. Если кому такое "чудо" надо, завтра выложу, да кстати, на этом форуме можно такое выкладывать? А если будет время, надо будет переписать код, привести его в порядок и тогда можно и на PgFoundry проектик сделать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2006, 17:49 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Вот та прога для визуализации таблиц и отношений внешних ключей. При первом запуске создает ini файл, его нужен отредактировать. Внести имя хоста, базы, пользователя, пароль и имя схемы. После повторного запуска она покажет таблицы, их можно подвигать. Кнопки: F1 - Помощь. F2 - Пишет картинку. F5 - Рефрешит и перечитывает базу. Для ее работы нужны все клиентские dll-ки postgres-а. Никакой гарантии правильной работы и никакой поддержки. Делалось как временный инструмент самому себе, так что если кто знает подобную "нормальную" программу сообщите мне, буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:18 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
жаль, у меня не запустилось, винда ругнулась :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 12:01 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Funny_Falconжаль, у меня не запустилось, винда ругнулась :-( А что за ошибка? Какой там текст ошибки? При первом запуске обязательно появится ошибка!!! Потому что нет файла конфигурации, он появится после первого запуска. Код: plaintext Его нужно изменить, в первой строке должны быть 5 слов: имя_вашего_сервера имя_базы имя_пользователя пароль имя_схемы_данных Вот например: Код: plaintext Код: plaintext Если в базе есть таблицы они появятся в окне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 12:37 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
У меня тоже ругается. типа приложение выполнило недопустимую операцию и будет закрыто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 13:29 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Ага именно при втором запуске, а во время первого нормально создает файлик. Видимо еще какой dll не хватает. А еще, я сижу на RemoteDesctop - может поэтому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 14:26 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Gold FishУ меня тоже ругается. типа приложение выполнило недопустимую операцию и будет закрыто. Я пробовал ее на разных машинах, современных и древних и под разными версиями win, (XP, XP sp2, win98se) ошибок с "недопустимой операцией" не было ниразу, сервер был версии 8.1.0. Правда есть несколько критичных ограничений, припоминаю: 1 - кол-во таблиц: <= 30 2 - кол-во полей в таблице: <= 50 3 - имена таблиц: без пробелов (хотя, только сохранение не будет работать) Из-за 1 и 2 может возникнуть ошибка "приложение выполнило недопустимую операцию ...", т.к. там простые масивы. Да, и на машине где не установлен Postgres (хотя бы клиентская часть), нужны будут следущие его dll-ки, но про них сообщит система: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 15:31 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Тогда понятно! у меня 55 таблиц :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 16:21 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Gold FishТогда понятно! у меня 55 таблиц :-( Ок, исправлю одну цифру, и тогда выложу новую мультитабличную версию :) на 100 таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 17:49 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
> Тогда понятно! у меня 55 таблиц :-( > > > Ок, исправлю одну цифру, и тогда выложу новую мультитабличную версию :) на 100 таблиц. Вот а началось массовое тестирование, то ли еще будет. :-) Может их в TStringList лучше хранить? Или в динамическом массиве. 100 таблиц - это тоже детское количество, у меня их например за 300, правда это база не на Postgres, но думаю это не принципиально. В 1С - в районе 2 тыс. таблиц. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 19:05 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
barry> Тогда понятно! у меня 55 таблиц :-( > > Ок, исправлю одну цифру, и тогда выложу новую мультитабличную версию :) на 100 таблиц. Вот а началось массовое тестирование, то ли еще будет. :-) Может их в TStringList лучше хранить? Или в динамическом массиве. 100 таблиц - это тоже детское количество, у меня их например за 300, правда это база не на Postgres, но думаю это не принципиально. В 1С - в районе 2 тыс. таблиц. Posted via ActualForum NNTP Server 1.3 Вот версия на 350 таблиц. Но я с трудом представляю как можно красиво расставить на моем "холсте" такое количество таблиц :) Можно, если отношений/ограничений между ними будет мало, а иначе все почеркается связями. Может при такой сложности надо переходить на ER-диаграммы (отношений сущьностей). Вот программа: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 21:04 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
savrockВот версия на 350 таблиц. Но я с трудом представляю как можно красиво расставить на моем "холсте" такое количество таблиц :) Твой холст лет через 10 может вырасти до NxN метров, если ты об этом заблаговременно позаботишься. :-) Компьютерная индустрия шагала и шагает семимильными шагами. По крайней мере, вывалиться по AV в ситуации которую ты четко знаешь и можешь предотвратить - ну это как минимум неспортивно. Ну вставь там if, скажи "Обрабатывается не более 100 таблиц" и нормально, спокойно вываливайся. AV - это самая хреновая вешь, про нее можно выдвигать сотни гипотез, собственно говоря с чего и началось юзанье твоей приблуды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 23:33 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
barryТвой холст лет через 10 может вырасти до NxN метров, если ты об этом заблаговременно позаботишься. :-) Компьютерная индустрия шагала и шагает семимильными шагами. По крайней мере, вывалиться по AV в ситуации которую ты четко знаешь и можешь предотвратить - ну это как минимум неспортивно. Ну вставь там if, скажи "Обрабатывается не более 100 таблиц" и нормально, спокойно вываливайся. AV - это самая хреновая вешь, про нее можно выдвигать сотни гипотез, собственно говоря с чего и началось юзанье твоей приблуды. Я же предупреждал, что прогу писал под себя :) А в этой публичной версии, кроме хелпика по F1 и автоматического создания файла конфигурации я ничего не менял. По хорошему, надо все переделывать :) Но эта прога выросла из попытки создать запрос для получения информации о внешних ключах таблицы, просто консольный проект на Visual C++, буквы в черном окошке. А потом переползло в графику под win32api. Не хочу из этого моргающего г. делать конфетку, ехх, противно :) Меня оно в таком виде устраивает. Вот если с нуля.... А щас думаю пока добавить быструю навигацию по холсту на правую кнопку мыши, а то на одном экране все давно не помещается и мне лень таскать мышь к полосам прокрутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 10:57 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Штука полезная!!! Ее нужно развивать. Но ее нужно переписать на java или на С но с использованием например Qt, чтобы она была кросплатфоменная. Ну и конечно ф-ций нужно в нее добавлять. Неудобно что таблички при открытии раскладываются каскадом. При большом количестве ключей тяжело разложить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 11:57 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Gold Fish ... Неудобно что таблички при открытии раскладываются каскадом. При большом количестве ключей тяжело разложить. Согласен, но каскадом это просто реализуется, а иначе придется изобретать интеллектуальный метод позиционирования для новых таблиц, а это немного напряжно. Ведь когда новые таблицы появляются по мере их создания, по 1й - 2е штуки, то перетаскивание их на свои места не вызывает проблем. А на счет кроссплатформенности, согласен на все 100%, если делать нормальную, то сразу такую. Вот новая версия программы , в ней можно двигать холст правой кнопкой мыши... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 12:34 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
Нашел супер штуку. postgresql_autodoc называется. Представляет из скбя перловский скрипт, который генирирует Dia диаграмму с внешними ключами и html файлик с описанием базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 14:03 |
|
||
|
Как узнать: номер, имя и тип поля?
|
|||
|---|---|---|---|
|
#18+
вот случайно наткнулся на вашу прогу для схемы таблиц. хорошее дело. мне понравилось очень. я токо не понял - у меня чёто двоится почти везде примари кей - а тут смотрю рисунки - нормально всё... или это уже новую версию чтоли перекосило немного... и ещё есть одна проблема - у меня бд на схемы поделена - и у меня связи таблиц из разных схем тоже имеются - а они не отображаются на пикчерсе :). а - ну и если бы типы данных тоже указывать - цены бы этой программке не было. я долго такое что-то искал. мне не нужно править базу через схему - как в аксесе например. просто на картинку иногда в моменты особенно глубокой задумчивости охота взглянуть. а в остальном меня пгадмин вполне удовлетворяет. а самому такое писать как-то лениво :). графика - это не наш участок. я всё больше по клиентам к бд и бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2008, 01:03 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33524016&tid=2004606]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 438ms |

| 0 / 0 |
