Я пытаюсь отформатировать дамп postgres (pg_dump), чтобы иметь возможность импортировать его, используя соединение JDBC. pg_dump экспортирует текстовые поля, содержащие символы новой строки, в виде текста с символами новой строки, поэтому, когда я позже пытаюсь импортировать с использованием JDBC, я достигаю конца строки, и оператор не выполняется.
Что я хочу сделать, это взять дамп, пропустить его через sed
и экранировать все символы новой строки, так что в итоге я получаю по одному оператору INSERT
на строку. Проблема в том, что я не могу просто удалить все новые строки, но я могу удалить все новые строки, которые не соответствуют этому );\nINSERT INTO
. Есть ли простой способ сделать это?
Обновление :
Пример будет выглядеть так:
INSERT INTO sometable (123, And here goes some text
with
newlines
in
it', 'some more fields');
и результат, который я ищу, выглядит примерно так:
INSERT INTO sometable (123, And here goes some text\nwith\nnewlines\nin\nit', 'some more fields');
Так, чтобы каждый оператор INSERT
находился в одной строке, экранированные строки были экранированы.