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

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

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

33 ответов

11 просмотров

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

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 загрузите файл и по нужным условиям вставляете в новую таблицу.

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

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

Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Evo 1.4.34 PHP 7.4 Все работало штатно. На ровном месте SimpleGallery начал выдавать ошибку Что может быть? Уже все переустановил по новой. Места хватает. Хостинг reg.ru
Paul Savchenkov
6
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
юзеры Jetpack Compose тут?
Qtless Qtless
8
Карта сайта