Я изучил бы использование инструмента Sysinternals Procmon.exe, который может сказать Вам всем files/reg/network доступ. Это генерирует огромный журнал для отсеивания через, но существует источник информации на том, что пользователь выполняет что процесс и порождение конкретных типов нагрузки на сервер.
pg_dump:
pg_dump -st tablename dbname
или используйте инструменты PostgreSQL GUI (pgAdmin, phpPgAdmin, и т.д.)
Я понимаю, что немного опаздываю на эту вечеринку, но это был первый результат моего поиска в Google, поэтому я решил, что отвечу тем, что придумал.
Вы может довольно далеко продвинуться к решению с помощью этого запроса для получения столбцов:
SELECT *
FROM information_schema.columns
WHERE table_schema = 'YOURSCHEMA' AND table_name = 'YOURTABLE'
ORDER BY ordinal_position;
А затем этот запрос для наиболее распространенных индексов:
SELECT c.oid, c.relname, a.attname, a.attnum, i.indisprimary, i.indisunique
FROM pg_index AS i, pg_class AS c, pg_attribute AS a
WHERE i.indexrelid = c.oid AND i.indexrelid = a.attrelid AND i.indrelid = 'YOURSCHEMA.YOURTABLE'::regclass
ORDER BY" => "c.oid, a.attnum
Затем нужно построить строку (строки) запроса в правильном формате.
Основываясь на первой части ответа @ CubicalSoft, вы можете добавить следующую функцию, которая должна работать для простых таблиц (предполагает «общедоступную» схему по умолчанию и опускает ограничения, индексы и определяемые пользователем типы данных и т. д. и т. д.). Ответ @RJS - единственный способ сделать это правильно на данный момент; это то, что должно быть встроено в psql!
CREATE OR REPLACE FUNCTION show_create_table(table_name text, join_char text = E'\n' )
RETURNS text AS
$BODY$
SELECT 'CREATE TABLE ' || $1 || ' (' || $2 || '' ||
string_agg(column_list.column_expr, ', ' || $2 || '') ||
'' || $2 || ');'
FROM (
SELECT ' ' || column_name || ' ' || data_type ||
coalesce('(' || character_maximum_length || ')', '') ||
case when is_nullable = 'YES' then '' else ' NOT NULL' end as column_expr
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = $1
ORDER BY ordinal_position) column_list;
$BODY$
LANGUAGE SQL STABLE;
في سطر الأوامر ( psql
) يمكنك تشغيل: \ d <اسم الجدول>
لسرد كافة الأعمدة وأنواعها وفهارسها.
Как указано в https://serverfault.com/a/875414/333439 , с мета-командой Расширение Postgres ddlx ( https://github.com/lacanoid/pgddl ) делает именно это и многое другое. DBeaver — один из лучших инструментов для управления базами данных SQL. Вы можете получить запрос к таблице, например \ d
в
psql
позволяет отображать структуру таблицы в базе данных. Если вы хотите просмотреть запрос, используемый в метакоманде, вы можете использовать команду psql -E
. Как описано на странице руководства, переключатель -E
отражает запросы метакоманд \ d
. Итак, вы можете запустить psql -E
, вы можете просмотреть структуру таблицы с помощью мета-команды \ d
и, согласно переключателю
-E
, вы можете просмотреть запрос, созданный для описания структуры таблицы
create table имя_таблицы
, очень простым способом в инструменте DBeaver.
Теги
Похожие вопросы