Существует ли эквивалент ВЫСТАВОЧНОГО CREATE TABLE MySQL в Пост-ГРЭС?

Я изучил бы использование инструмента Sysinternals Procmon.exe, который может сказать Вам всем files/reg/network доступ. Это генерирует огромный журнал для отсеивания через, но существует источник информации на том, что пользователь выполняет что процесс и порождение конкретных типов нагрузки на сервер.

69
задан 29 October 2019 в 23:55
9 ответов

Можно попытаться проследить в файле журнала PostgreSQL, что "pg_dump-t таблица-s" действительно делает. Затем можно использовать тот же метод для записи собственной функции sql.

29
ответ дан 28 November 2019 в 19:29

pg_dump:

pg_dump -st tablename dbname

или используйте инструменты PostgreSQL GUI (pgAdmin, phpPgAdmin, и т.д.)

41
ответ дан 28 November 2019 в 19:29

Я понимаю, что немного опаздываю на эту вечеринку, но это был первый результат моего поиска в 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

Затем нужно построить строку (строки) запроса в правильном формате.

3
ответ дан 28 November 2019 в 19:29

Основываясь на первой части ответа @ 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;
4
ответ дан 28 November 2019 в 19:29

في سطر الأوامر ( psql ) يمكنك تشغيل: \ d <اسم الجدول> لسرد كافة الأعمدة وأنواعها وفهارسها.

]
17
ответ дан 28 November 2019 в 19:29

Как указано в https://serverfault.com/a/875414/333439 , с мета-командой \ d

в psql позволяет отображать структуру таблицы в базе данных. Если вы хотите просмотреть запрос, используемый в метакоманде, вы можете использовать команду psql -E . Как описано на странице руководства, переключатель -E отражает запросы метакоманд \ d . Итак, вы можете запустить psql -E , вы можете просмотреть структуру таблицы с помощью мета-команды \ d
и, согласно переключателю -E , вы можете просмотреть запрос, созданный для описания структуры таблицы

2
ответ дан 28 November 2019 в 19:29

В pgAdmin 4 просто найдите таблицу в дереве слева, например:

Servers
+ PostgreSQL 11
  + Databases
    + MYDATABASENAME
      + Schemas
        + public
          + Tables
            + MYTABLENAME  <-- click this tree element

Когда таблица выбрана, откройте вкладку SQL справа. Он отображает СОЗДАТЬ ТАБЛИЦУ для выбранной таблицы.

0
ответ дан 28 November 2019 в 19:29

Расширение Postgres ddlx ( https://github.com/lacanoid/pgddl ) делает именно это и многое другое.

0
ответ дан 28 November 2019 в 19:29

DBeaver — один из лучших инструментов для управления базами данных SQL. Вы можете получить запрос к таблице, например create table имя_таблицы, очень простым способом в инструменте DBeaver.

  • Щелкните правой кнопкой мыши имя таблицы.
  • Затем нажмите «Создать SQL», а затем «DDL». DDLimage
-1
ответ дан 18 August 2021 в 14:55

Теги

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