Всем привет.
Начал перетягивать базу из одной СУБД в Postgres. Столкнулся с одной странной проблемой. Когда делаю COPY просто строки с разделителем \t - то все в порядке. А когда пытаюсь сделать вставку строки, в которой есть произвольной длины текст - получаю ошибку, так как СУБД видимо считает, что там, где еще продолжается текст должен быть следующий столбец.
Вопрос. Возможно ли сделать некий уникальный разделитель или как-то обойти это ограничение или может быть кто-то уже занимался массовой вставкой каких-либо логов по средствам COPY в Postgres, в том числе с многострочными произвольными полями типа text.
Почитайте
http://postgresql.ru.net/manual/sql-copy.html
Можно и свой разделитель задать и бинарный формат использовать и CSV
Свой разделитель = 1 байт.
Свой разделитель = 1 байт. Это известно. Каким образом кроме утилиты pg_dump можно сделать бинарный формат? Делать csv не выгодно, так как изначально информация в формате xml и вливается самописным java-приложением.
Поэтому я и спрашиваю об опыте вливки с помощью COPY многострочных текстов.
> Каким образом кроме утилиты
> Каким образом кроме утилиты pg_dump можно сделать бинарный формат?
Так почитайте, каким. Там же всё написано!
> изначально информация в формате xml и вливается самописным java-приложением.
Тогда зачем вообще c COPY заморачиваться? Загружайте через JDBC сразу в БД
> Поэтому я и спрашиваю об опыте вливки с помощью COPY многострочных текстов.
А чем многостраничный текст отличается от немногостраничного? Просто не используйте в данном тексте тот разделитель, который призван разделять поля в COPY. Как это выглядит? Забейте в БД вручную пару записей, выгрузите их через pg_dump в текстовом формате и посмотрите.