Postgresql расширение файла базы данных

Обновлено: 05.07.2024

Чтобы увидеть, где находится каталог данных, используйте этот запрос.

Чтобы увидеть все параметры времени выполнения, используйте

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

show data_directory; Команда указывает на точное местоположение данных. Поиск в определенной папке является болезненным, так как кто-то другой мог установить ее для вас, и теперь вы не знаете конфигурацию, поэтому следующий sql поможет сэкономить время. :) Спасибо, Майк. Он говорит , что «должны быть суперпользователем , чтобы изучить каталог данных» :( Если вы не администратор, вам все равно не нужно об этом знать. Кстати, если кто-то ищет местоположение базы данных для Postgres.app на Mac, как я, то по умолчанию оно находится в

/ Library / Application Support / Postgres [ver] / var.

Чтобы выполнить запрос, используйте PGAdmin III и значок «выполнить запрос» в строке меню.

На Windows7 все базы данных называют числом в файле с именем pg_database под C:\Program Files (x86)\PostgreSQL\8.2\data\global . Затем вы должны найти имя папки по этому номеру в C:\Program Files (x86)\PostgreSQL\8.2\data\base . Это содержание базы данных.

Не отвечайте определенным образом для ОС, если в вопросе явно не указана ОС. Почему нет? Если вы не упомянете ОС и просто скажете «это работает», любой, кто попробует это на другой ОС, будет сбит с толку. Это актуально. РЕДАКТИРОВАТЬ: О, вы, вероятно, имеете в виду "вообще не давать конкретного ответа ОС". Я думаю, это имеет смысл, я не знаю. @ Давид, вопрос был закрыт, предположительно, потому что не было указано, какая ОС. (Если бы он указывал ОС, он был бы закрыт из-за того, что он был слишком конкретным.) Ваш ответ был полезным и информативным - просто игнорируйте скептиков и падальщиков, пока им не удастся окончательно уничтожить SO. Ненавистники будут ненавидеть, и все такое. @ SamGoody было бы что-то вроде того, что вы говорили, если бы этот ответ был действительно правильным. (Это не совсем неверно, поскольку папка может быть в Windows, но это определенно не дано). Является ли это случаем или нет, можно легко узнать, следуя уже даному ответу. @senthilkumari У меня есть postgresql 11 и windows 10. Как вы упомянули, я пытался просмотреть базу данных pg_database внутри глобальной папки, но не смог ее увидеть. Я мог видеть кучу _vms, _fsm, config_exec_params, pg_control, pg_filenode.map, pg_internal.init. Для Windows 10, какой файл с именем следует искать. Это другое?

Откройте pgAdmin и перейдите в Свойства для конкретной базы данных. Найдите OID и откройте каталог

Там должны быть ваши файлы БД.

Как указано в разделе « Расположение базы данных PostgreSQL по умолчанию в Linux », в Linux вы можете узнать, используя следующую команду:

Под моей установкой Linux это здесь: /var/lib/postgresql/8.x/

Вы можете изменить это с initdb -D "c:/mydb/"

Зависит от дистрибутива - для Fedora 20 он ниже /var/lib/pgsql/data . Лучше узнать, используя ps auxw|grep postgres|grep -- -D .

Расположение определенных таблиц / индексов может быть скорректировано с помощью TABLESPACE:

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

Могу поспорить, что вы задаете этот вопрос, потому что вы попробовали pg_ctl start и получили следующую ошибку:

pg_ctl: каталог базы данных не указан и переменная окружения PGDATA не установлена

Другими словами, вы ищете в каталоге на сайте после того, как -D в вашей pg_ctl start команде.

В этом случае каталог, который вы ищете, содержит эти файлы.

Вы можете найти его, найдя любой из файлов и каталогов выше, используя поиск, предоставляемый вашей ОС.

Например, в моем случае ( установка HomeBrew на Mac OS X ) эти файлы находятся в /usr/local/var/postgres . Для запуска сервера я набираю:

Если вы используете доморощенный, более простой способ найти эти данные просто brew info postgres Вы правы по поводу причины, по которой я ищу папку базы данных. Но дело в том, что я не могу найти ни один из вышеперечисленных файлов с locate <filename> Нашел их . Пришлось использовать sudo locate <filename>

Postgres хранит данные в файлах в своем каталоге данных. Выполните следующие шаги, чтобы перейти к базе данных и ее файлам:

База данных, соответствующая файлу таблицы postgresql, является каталогом. Расположение всего каталога данных можно получить, запустив SHOW data_directory . в UNIX-подобной ОС (например, Mac) /Library/PostgreSQL/9.4/data Перейдите в базовую папку в каталоге данных, в котором есть все папки базы данных: /Library/PostgreSQL/9.4/data/base

Найдите имя папки базы данных, выполнив (Дает целое число. Это имя папки базы данных):

Найдите имя файла таблицы, выполнив (Дает целое число. Это имя файла):

Это бинарный файл. Детали файла, такие как размер и время создания, можно получить как обычно. Для получения дополнительной информации прочитайте эту тему

На Mac: /Library/PostgreSQL/9.0/data/base

Каталог не может быть введен, но вы можете посмотреть содержимое через: sudo du -hc data

СУБД PostgreSQL в разных операционных системах имеет практически идентичную структуру каталогов. В данной статье рассматривается стандартная структура каталогов для ОС Ubuntu 12.04.

По умолчанию PostgreSQL устанавливается в папку /var/lib/postgresql/<version>/main. Основной каталог СУБД содержит подкаталоги с пользовательскими данными и служебной информацией.

    postmaster.opts - файл, в котором сдержится командная строка с параметрами, с помощью которой была запущена СУБД.

На моем компьютере в этом файле хранится следующая строка

PG_VERSION - файл, содержащий основной номер версии СУБД (к примеру, 9.3)

base - каталог, содержащий каталоги баз данных (по каталогу на каждую БД)

Имена подкаталогов соответствуют OID'ам баз данных.

global - каталог, в котором хранятся глобальные таблицы (к примеру, pg_database)

На каждую транзакцию выделяется 2 бита. Статус транзакции может иметь следующие значения:

  • транзакция стартовала,
  • транзакция успешно завершена,
  • транзакция отменена,
  • подтранзакция успешно завершена.

Количество хранимых транзакций ограничено параметром autovacuum_freeze_max_age (максимальное значение

2 миллиарда), который в свою очередь регулирует работу автовакума. Поэтому максимальный размер файла может быть

pg_multixact - каталог, содержащий информацию, необходимую для координации работы параллельных транзакций (используется для хранения SHARED ROW LOCKS)

pg_notify - каталог, в котором хранится информация для поддержки работы LISTEN/NOTIFY

pg_serial - каталог, содержащий информацию о завершенных последовательных (serializable) транзакциях

pg_snapshots - каталог, в котором хранятся экспортированные снапшоты

Файлы создаются при вызове процедуры pg_export_snapshot() и существуют до окончания транзакции.

Ниже представлена последовательность действий, позволяющая понять, как появляются и исчезают файлы в этом каталоге.

Экспорт снапшота в транзакции

В каталоге появился файл, в котором содержится информация о снапшоте

В данном разделе описывается формат хранения на уровне файлов и каталогов.

Файлы конфигурации и файлы данных, используемые кластером базы данных, традиционно хранятся вместе в каталоге данных кластера, который обычно называют PGDATA (по имени переменной среды, которую можно использовать для его определения). Обычно PGDATA находится в /var/lib/pgsql/data . На одной и той же машине может находиться множество кластеров, управляемых различными экземплярами сервера.

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

Таблица 65.1. Содержание PGDATA

ЭлементОписание
PG_VERSION Файл, содержащий номер основной версии PostgreSQL
base Подкаталог, содержащий подкаталоги для каждой базы данных
global Подкаталог, содержащий общие таблицы кластера, такие как pg_database
pg_commit_ts Подкаталог, содержащий данные о времени фиксации транзакций
pg_clog Подкаталог, содержащий данные о состоянии транзакции
pg_dynshmem Подкаталог, содержащий файлы, используемые подсистемой динамически разделяемой памяти
pg_logical Подкаталог, содержащий данные о состоянии для логического декодирования
pg_multixact Подкаталог, содержащий данные о состоянии мультитранзакций (используемые для разделяемой блокировки строк)
pg_notify Подкаталог, содержащий данные состояния прослушивания и нотификации (LISTEN/NOTIFY)
pg_replslot Подкаталог, содержащий данные слота репликации
pg_serial Подкаталог, содержащий информацию о выполненных сериализуемых транзакциях.
pg_snapshots Подкаталог, содержащий экспортированные снимки (snapshots)
pg_stat Подкаталог, содержащий постоянные файлы для подсистемы статистики.
pg_stat_tmp Подкаталог, содержащий временные файлы для подсистемы статистики
pg_subtrans Подкаталог, содержащий данные о состоянии подтранзакций
pg_tblspc Подкаталог, содержащий символические ссылки на табличные пространства
pg_twophase Подкаталог, содержащий файлы состояний для подготовленных транзакций
pg_xlog Подкаталог, содержащий файлы WAL (журнал предзаписи)
postgresql.auto.conf Файл, используемый для хранения параметров конфигурации, которые устанавливаются при помощи ALTER SYSTEM
postmaster.opts Файл, содержащий параметры командной строки, с которыми сервер был запущен в последний раз
postmaster.pid Файл блокировки, содержащий идентификатор (ID) текущего управляющего процесса (PID), путь к каталогу данных кластера, время запуска управляющего процесса, номер порта, путь к каталогу Unix-сокета (пустой для Windows), первый корректный адрес прослушивания (listen_address) (IP-адрес или * , либо пустое значение в случае отсутствия прослушивания по TCP), и ID сегмента разделяемой памяти (этот файл отсутствует после остановки сервера).

Для каждой базы данных в кластере существует подкаталог внутри PGDATA /base , названный по OID базы данных в pg_database . Этот подкаталог по умолчанию является местом хранения файлов базы данных; в частности, там хранятся её системные каталоги.

Каждая таблица и индекс хранятся в отдельном файле. Для обычных отношений, эти файлы получают имя по номеру файлового узла таблицы или индекса, который содержится в pg_class . relfilenode . Но для временных отношений, имя файла имеет форму t BBB _ FFF , где BBB - идентификатор серверного процесса сервера, который создал данный файл, а FFF — номер файлового узла. В обоих случаях, помимо главного файла (также называемого основным слоем), у каждой таблицы и индекса есть карта свободного пространства (см. Раздел 65.3), в которой хранится информация о свободном пространстве в данном отношении. Имя файла карты свободного пространства образуется из номера файлового узла с суффиксом _fsm . Также таблицы имеют карту видимости, хранящуюся в слое с суффиксом _vm , для отслеживания страниц, не содержащих мёртвых записей. Карта видимости подробнее описана в Разделе 65.4. Нежурналируемые таблицы и индексы имеют третий слой, так называемый слой инициализации, имя которого содержит суффикс _init (см. Раздел 65.5).

Внимание

Заметьте, что хотя номер файла таблицы часто совпадает с её OID, так бывает не всегда; некоторые операции, например, TRUNCATE , REINDEX , CLUSTER и некоторые формы команды ALTER TABLE могут изменить номер файла, но при этом сохранят OID. Не следует рассчитывать, что номер файлового узла и OID таблицы совпадают. Кроме того, для некоторых системных каталогов, включая и pg_class , в pg_class . relfilenode содержится ноль. Фактический номер файлового узла для них хранится в низкоуровневой структуре данных, и его можно получить при помощи функции pg_relation_filenode() .

Когда объём таблицы или индекса превышает 1 GB, они делятся на сегменты размером в один гигабайт. Файл первого сегмента называется по номеру файлового узла (filenode); последующие сегменты получают имена filenode.1, filenode.2 и т. д. При такой организации хранения не возникает проблем на платформах, имеющих ограничения по размеру файлов. (На самом деле, 1 ГБ — лишь размер по умолчанию. Размер сегмента можно изменить при сборке PostgreSQL , используя параметр конфигурации --with-segsize .) В принципе, карты свободного пространства и карты видимости также могут занимать нескольких сегментов, хотя на практике это маловероятно.

У таблицы, столбцы которой могут содержать данные большого объёма, будет иметься собственная таблица TOAST, предназначенная для отдельного хранения значений, которые слишком велики для хранения в строках самой таблицы. Основная таблица связывается с её таблицей TOAST (если таковая имеется) через pg_class . reltoastrelid . За подробной информацией обратитесь к Разделу 65.2.

Содержание таблиц и индексов рассматривается ниже (см. Раздел 65.6).

Табличное пространство делает сценарий более сложным. Каждое пользовательское табличное пространство имеет символическую ссылку внутри каталога PGDATA /pg_tblspc , указывающую на физический каталог табличного пространства (т. е., положение, указанное в команде табличного пространства CREATE TABLESPACE ). Эта символическая ссылка получает имя по OID табличного пространства. Внутри физического каталога табличного пространства имеется подкаталог, имя которого зависит от версии сервера PostgreSQL , как например PG_9.0_201008051 . (Этот подкаталог используется для того, чтобы последующие версии базы данных могли свободно использовать одно и то же местоположение, заданное в CREATE TABLESPACE .) Внутри каталога конкретной версии находится подкаталог для каждой базы данных, которая имеет элементы в табличном пространстве, названный по OID базы данных. Таблицы и индексы хранятся внутри этого каталога, используя схему именования файловых узлов. Табличное пространство pg_default недоступно через pg_tblspc , но соответствует PGDATA /base . Подобным же образом, табличное пространство pg_global недоступно через pg_tblspc , но соответствует PGDATA /global .

Функция pg_relation_filepath() показывает полный путь (относительно PGDATA ) для любого отношения. Часто это избавляет от необходимости запоминать многие из приведённых выше правил. Но следует помнить, что эта функция выдаёт лишь имя первого сегмента основного слоя отношения, т. е. возможно, понадобится добавить номер сегмента и/или _fsm , _vm или _init , чтобы найти все файлы, связанные с отношением.

Временные файлы (для таких операций, как сортировка объёма данных большего, чем может уместиться в памяти) создаются внутри PGDATA /base/pgsql_tmp или внутри подкаталога pgsql_tmp каталога табличного пространства, если для них определено табличное пространство, отличное от pg_default . Имя временного файла имеет форму pgsql_tmp PPP . NNN , где PPP — PID серверного процесса, а NNN служит для разделения различных временных файлов этого серверного процесса.

PostgreSQL с использованием данных

База данных

СУБД PostgreSQL может использоваться для выполнения большого количества различных операций с данными, включая создание базы данных и удаление таблиц, а также вставку, удаление, изменение и обновление данных, а также импорт и экспорт данных. и т. д. Данные можно очень удобно импортировать в таблицу PostgreSQL. Кроме того, эта СУБД поддерживает широкий спектр различных форматов файлов импорта. В этом руководстве показано, как импортировать файл CSV в PostgreSQL в Windows 10.

Формат файла CSV

CSV означает значения, разделенные запятыми. Это формат файла, используемый для хранения записей данных, и каждый атрибут записи разделяется запятой. Это один из наиболее часто используемых форматов файлов, наряду со многими другими, такими как JSON и xlsx.

Процедура импорта CSV-файла в PostgreSQL в Windows 10

Если вы хотите импортировать CSV-файл в PostgreSQL в Windows 10, вам нужно будет выполнить следующие четыре основных шага:

Шаг 1: Создание файла CSV в Windows 10

Во-первых, вам нужно создать CSV-файл в Windows 10 (если у вас еще нет CSV-файла, который вы хотите импортировать в PostgreSQL). Файл CSV в Windows 10 можно создать очень легко. Вам просто нужно перейти в предпочтительный каталог, чтобы создать этот файл, и щелкнуть правой кнопкой мыши любое доступное пустое пространство. Откроется меню, из которого вам нужно будет продолжить, как показано на изображении ниже:

Во-первых, вам нужно создать CSV-файл в Windows 10

После этого процесса будет создан лист MS Excel в желаемом каталоге. Теперь вам нужно заполнить этот лист MS Excel данными, показанными на следующем изображении:


Вы также можете заполнить его желаемыми данными. Однако наша таблица MS Excel состоит из трех разных столбцов: имя, возраст и пол. Кроме того, этот лист MS Excel содержит девять различных записей, как показано на изображении выше.

После того, как вы заполнили свой лист MS Excel желаемыми данными, следующим шагом будет их сохранение в формате CSV. Для этого вам нужно будет нажать на опцию File в строке меню MS Excel, как показано на изображении выше.

Теперь вам нужно нажать на кнопку «Сохранить как»:

На вашем экране откроется окно, в котором вы сможете выбрать формат файла CSV из доступного списка, как показано на следующем изображении:


После выбора формата файла CSV нажмите кнопку «Сохранить», чтобы сохранить созданный файл CSV в желаемом месте.


Теперь наш CSV-файл подготовлен, который мы позже будем импортировать в PostgreSQL. Мы назвали этот CSV-файл CSV.csv.

Шаг 2: Создание таблицы в PostgreSQL в Windows 10

После создания файла CSV вам необходимо создать таблицу в PostgreSQL, в которой будут храниться данные, импортированные из этого файла CSV. Для продолжения вам необходимо сначала получить доступ к среде PostgreSQL через командную строку Windows 10 (процедура этого подробно обсуждалась в наших предыдущих статьях о PostgreSQL). Как только вы окажетесь в среде PostgreSQL, вам необходимо создать таблицу с подходящим форматом, которая может содержать все записи из CSV-файла, который мы только что создали. Запрос на создание таблицы в среде PostgreSQL показан ниже:

В этом запросе мы хотим создать таблицу с именем bio_Data, которая имеет три разных столбца или атрибута, то есть имя, возраст и пол. Эти три атрибута будут содержать все записи нашего файла CSV.csv.


После успешного выполнения этого запроса на консоли будет отображаться ответ «СОЗДАТЬ ТАБЛИЦУ», как показано на следующем изображении:


На этом этапе в PostgreSQL создана таблица, в которую мы собираемся импортировать целевой CSV-файл на следующем этапе этой статьи. Единственное, о чем нужно позаботиться при создании этой таблицы, — это то, что в ней должно быть такое же количество столбцов, как и в нашем целевом CSV-файле. Только тогда процесс импорта состоится успешно.

Шаг 3: Импорт данных из файла CSV в таблицу PostgreSQL в Windows 10

Чтобы импортировать данные целевого файла CSV во вновь созданную таблицу PostgreSQL, в консоли необходимо выполнить следующий запрос:

Теперь мы подробно объясним вам этот запрос. Оператор «COPY» этого запроса просто выполнит весь процесс импорта. «Bio_Data» представляет имя таблицы, в которую будет импортирован целевой файл CSV. Затем идет ключевое слово «FROM», после которого мы указываем путь, откуда должен быть прочитан целевой файл CSV. Далее следует ключевое слово «DELIMITER», которое будет следовать за разделителем, который использовался в целевом файле CSV. Поскольку мы создали CSV-файл с разделителями-запятыми, то в нашем случае разделителем будет ’,’. Затем ключевое слово «CSV» сообщит, какой формат файла мы импортируем в нашу таблицу PostgreSQL. Наконец, ключевое слово «HEADER» означает, что целевой CSV-файл содержит строку заголовка в начале записей, которые будут пропущены во время процесса импорта.

Если вы правильно указали все ранее упомянутые параметры, при выполнении этого запроса на консоли отобразится успешный ответ «COPY 9».



К настоящему времени целевой CSV-файл успешно импортирован в таблицу PostgreSQL. Однако это будет подтверждено с помощью следующего шага.

Шаг 4: просмотр таблицы PostgreSQL в Windows 10, чтобы узнать, были ли данные импортированы успешно или нет

Мы можем просмотреть нашу таблицу PostgreSQL, чтобы убедиться, что процесс импорта прошел успешно или нет. Если он содержит все записи нашего CSV-файла, значит, данные из нашего целевого CSV-файла были успешно импортированы в нашу таблицу PostgreSQL. В противном случае это не удалось. Чтобы просмотреть нашу таблицу PostgreSQL на консоли, мы выполним следующий запрос:

Этот запрос отобразит все записи из таблицы bio_Data PostgreSQL. Из записей этой таблицы, показанных на следующем изображении, вы можете убедиться, что данные из нашего целевого файла CSV были правильно импортированы в нашу таблицу PostgreSQL в Windows 10.


Заключение

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

Читайте также: