Прочитать файлы каталогов данных PostgreSQL
Как я могу просматривать и читать файлы в каталоге "data \ base" PostgreSQL. Я пытаюсь использовать "pg_ctl" для импорта этого каталога на мой сервер в качестве базы данных, но это не удалось. я пытаюсь сделать архив tar и восстановить его с помощью pgadmin, но он возвращает ошибку заголовка toc. Я знаю, что каждая папка в "data/base" - это OID базы данных, а каждый файл - это таблица и относительные данные. эти файлы, такие как двоичный файл или файл данных, например:(16384/1174)
ËÌ 0 ðð b1 0ëÌ Ô ð àŸ ÐŸ ŸŸ ° Ÿ Ÿ Ÿ € Ÿ pŸ Ÿ PŸ @Ÿ 0Ÿ Ÿ Ÿ Ÿ ðž àž Ðž Àž °ž ž ž €ž pž
ž Pž @ ž 0ž ž ž ð à Ð À ° € p P @ 0 ðœ àœ Ðœ Àœ °œ œ œ €œ pœ
œ Pœ @ œ 0œ œ œ œ ð ›à› Ð ›A› °› › › €› p› `› P› @› 0› › › › ðš àš Ðš š °š š
Есть ли способ просмотреть и прочитать?? Я хочу получить таблицы и данные в нем. Я много искал и не нашел верного решения. пожалуйста помоги. большое спасибо.
2 ответа
Ни pg_ctl
, ни pgAdmin
Ни один клиент SQL не может работать с файлами базы данных. Если вы хотите прочитать файл, вы должны изучить структуру страницы (ссылка ниже) и узнать, как использовать эти знания. Так что отвечая Есть ли способ просмотреть и прочитать?? да, в основном вы цитируете содержание в вашем вопросе. Но вы не можете использовать его для построения таблицы или индексации данных. Если вы не поддерживаете постгрес. Или попробуйте взломать это, чтобы заставить его думать, что ваш 16384/1174
файл является существующим отношением - я считаю, что оба находятся вне области видимости.
ниже некоторая ссылка на структуру, которую вы пытаетесь прочитать
https://www.postgresql.org/docs/current/static/storage-page-layout.html
Каждая таблица и индекс хранятся в виде массива страниц фиксированного размера.
и далее:
Первые 24 байта каждой страницы состоят из заголовка страницы (PageHeaderData). Его формат подробно описан в таблице 66.3. Первое поле отслеживает самую последнюю запись WAL, относящуюся к этой странице. Второе поле содержит контрольную сумму страницы, если контрольные суммы данных включены. Далее следует 2-байтовое поле, содержащее биты флага. Далее следуют три двухбайтовых целочисленных поля (pd_lower, pd_upper и pd_special). Они содержат смещения байтов от начала страницы до начала нераспределенного пространства, до конца нераспределенного пространства и до начала специального пространства. Следующие 2 байта заголовка страницы, pd_pagesize_version, хранят как размер страницы, так и индикатор версии. Начиная с PostgreSQL 8.3 номер версии равен 4; PostgreSQL 8.1 и 8.2 использовали версию № 3; PostgreSQL 8.0 использовал версию № 2; PostgreSQL 7.3 и 7.4 использовали версию № 1; в предыдущих выпусках использовалась версия номер 0. (Базовый макет страницы и формат заголовка не изменились в большинстве этих версий, но макет заголовков строк кучи имеет.) Размер страницы в основном представлен только как перекрестная проверка; в установке не поддерживается более одного размера страницы. Последнее поле является подсказкой, показывающей, может ли сокращение страницы быть прибыльным: оно отслеживает самый старый необрезанный XMAX на странице.
Мы можем использовать Visual Code для открытия файлов в базовом каталоге. 1). Установите визуальный код 2). Установите расширение Hex-редактора 3). Перейдите в базовый каталог, выберите нужный файл, выберите «Открыть с помощью», выберите «Визуальный код», выберите «Все равно открыть», затем в левом верхнем углу выберите «Шестнадцатеричный редактор». Наслаждаться!