172 похожих чатов

Доброе утро, моя таблица существует для хранения xml файлов Подскажите пожалуйста,

уже весь интернет перерыла, как я могу выгрузить все загруженные ранее в нее файлы, при том что бы сохранилось нужно мне название файла, файл в формате xml и сохранение шло локально в нужную папку?)
Такое вообще возможно?)

33 ответов

30 просмотров

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

Alina- Автор вопроса
Роман Жарков
Можно. Для этого надо открыть документацию к вашей...

Не у кого спросить пока что, сказали до конца дня предоставить скрипт по выгрузке. Я вообще джавист, на Джаве могу это реализовать, а вот при помощи sql….

Alina
Не у кого спросить пока что, сказали до конца дня ...

SQL не пишет ни в какие "локальные файлы" (по крайней мере, в норме) — он вообще не для этого. > Я вообще джавист, на Джаве могу это реализовать Ну и реализовали бы, зачем SQL-то мучить? ;)

Alina- Автор вопроса

да, можно в psql

Alina
Заказчику нужен sql скрипт))

А вечный двигатель ему не нужен? ;) Ради любопытства — выполняемый чем (каким клиентом (psql?) — сам по себе PostgreSQL никаких "sql скриптов" выполнять не умеет, если что), где (на сервере, где установлен PostgreSQL, или удалённо?) и с какими правами доступа (superuser или нет)?

Alina- Автор вопроса
Yaroslav Schekin
А вечный двигатель ему не нужен? ;) Ради любопытст...

Superuser, сама база на удаленном сервере, клиенты - phAdmin, DBeaver в основном)

а покажите схему таблицы

А разве у этих клиентов есть какие-то встроенные [скриптовые] (мета)языки (вот в psql есть, например)? Иначе я просто не понимаю, какими средствами Вы что-то собираетесь записывать в локальные файлы...

Alina- Автор вопроса
Yaroslav Schekin
А разве у этих клиентов есть какие-то встроенные [...

Я если честно тоже не понимаю 😅 Да в целом sql не мое, просто дали задание и приходится сейчас искать как это сделать… А что бы вы могли посоветовать?)

Создайте дамп таблицы)))

Rodya
Создайте дамп таблицы)))

Не, ну а что?))) Задача: выгрузить как-то так чтобы было просто удобно и читаемо, да ещё и в виде SQL. Пусть будет дамп в SQL формате)

Правильно я понял, в таблице хранятся xml файлы, Вам надо написать скрипт, который выгрузит каждый файл (в xml) при этом даст файлу "правильное" имя (видимо хранится отдельным полем в таблице) ? Нужно еще и структуру таблицы смотреть.

Guzya
Правильно я понял, в таблице хранятся xml файлы, В...

да что так, что так, одного sql не хватит всё равно

DO $$ DECLARE file_record RECORD; file_name TEXT; xml_content TEXT; BEGIN FOR file_record IN SELECT filename, xml_content FROM your_table LOOP file_name := file_record.filename; xml_content := file_record.xml_content; file_name := '/path/to/files/' || file_name; EXECUTE format('COPY (SELECT %L) TO %L', xml_content, file_name); END LOOP; END $$;

Rodya
DO $$ DECLARE file_record RECORD; file_name TEXT; ...

> сама база на удаленном сервере Я так понял, что файлы нужны на клиенте, а не там... впрочем, автору виднее.

Rodya
DO $$ DECLARE file_record RECORD; file_name TEXT; ...

А если там с одинаковыми file_name будет?

а сколько там в таблице строк? Сколько XML? может там 5 строк... можно тогда скопипастить в пустые файлы

Андрей Никитин
А если там с одинаковыми file_name будет?

:-)))))) вариант для затравки, а так можно хоть 1000 условий кинуть)

Rodya
DO $$ DECLARE file_record RECORD; file_name TEXT; ...

И вот способ в локальном посгресе уже сработает

Alina- Автор вопроса
Андрей Никитин
И вот способ в локальном посгресе уже сработает

Спасибо, пробою, но ошибка) Я если честно в этом вообще ничего не понимаю, из того что вы мне накидали 😱

Alina
Спасибо, пробою, но ошибка) Я если честно в этом в...

А есть прикольная программа Loginom - отечественная, все по русски там. Для локального использования бесплатная. Можно в ней сделать соединение в ваш PostgreSQL и там мышкой накидать цикл, что бы эти XML выгрузить в папку... но вот как это там сделать я не подскажу

Alina
Спасибо, пробою, но ошибка) Я если честно в этом в...

Так Вы бы задачу подробнее объяснили... и вообще, зачем "скрипт" — кое-что из того, что Вам советуют (дампы и т.п.), скорее подходит для того, чтобы однократно "выгрузить и забыть". А для FDW нужен локальный сервер PostgreSQL и наличие доступа на удалённый (в т.ч. в будущем).

Если однократно — достаточно просто сделать дамп (базы или таблиц(ы) — Вам виднее), зачем все эти "пляски" со скриптами?!

Alina- Автор вопроса
Yaroslav Schekin
Если однократно — достаточно просто сделать дамп (...

А дамп позволяет выгрузить все эти файлы?) То есть если в базе 5000 файлов, я смогу с помощью дампа получить на пк все эти 5000 файлов в нужном мне формате?)

Alina
А дамп позволяет выгрузить все эти файлы?) То есть...

Вы всю базу получите. Я не понимаю, зачем Вам именно файлы? > у заказчика полностью сносится старая бд и создаваться новая Вот это зачем делается, например? Там структура базы меняется, или... что?

Alina- Автор вопроса
Yaroslav Schekin
Вы всю базу получите. Я не понимаю, зачем Вам имен...

Да, меняется и логика работы с файлами и структура

Alina
Да, меняется и логика работы с файлами и структура

Так почему бы не сделать (и не применить в БД заказчика) скрипт для миграции старой схемы данных в новую, как это обычно делается? > Поэтому файлы придется загружать повторно Т.е. структура меняется настолько, что иначе это сделать невозможно, что ли (как-то это странно)?

Alina- Автор вопроса

Там просто как раз были баги в загрузке файлов и пропускались в базу некорректный файлы, ну там много всяких багов вообщем И в новой версии приложение уже не пропускает эти файлы А в ручную их перебрать не получится, поэтому нужно загрузить повторно в приложение, вот)

Alina
Там просто как раз были баги в загрузке файлов и п...

Ну так возьмите у заказчика дамп этой базы, разверните локально у себя, выгрузите файлы (хоть программой на Java, хоть примерно так, как тут показывали (plpgsql))... а дальше Вам виднее, что с ними делать.

Alina
Там просто как раз были баги в загрузке файлов и п...

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

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта