импортировать дамп MySQL в Postgres и экранировать \

0

Я получил дамп MYSQL и должен вставить его в таблицу Postgres.

Внутри этого дампа poi_dump.sql имеется много строк вставки. Пример, как показано ниже:

Insert into table values (1,'hello','\rthis is a beautiful Alan\ cottage', '\nbyebye')
Insert into table values (1,'hello','\rthis is a big\"Work', '\nbyebye')

Я использую команду PSQL:

psql analytics < poi_dump.sql

Однако postgres не распознает все\используемые для выхода в поле ''.

Errors From Postgres:
Query buffer reset (cleared).
invalid command \nOn
invalid command \n
invalid command \'
invalid command \'
invalid command \'
invalid command \n
invalid command \"Without
invalid command \nPort-a-loo
Query buffer reset (cleared).
invalid command \n

Как я могу сделать postgres, чтобы принять те \r,\n, внутри поля цитаты?

Теги:
plpgsql
escaping

1 ответ

0
Лучший ответ

PostgreSQL по умолчанию не распознает обратную косую черту в строке. Но это поведение можно просто изменить:

ides_jmmaj_prac=# select 'hello\nworld';
┌──────────────┐
│   ?column?   │
╞══════════════╡
│ hello\nworld │
└──────────────┘
(1 row)

Time: 0,496 ms
ides_jmmaj_prac=# set standard_conforming_strings TO off;
SET
Time: 0,251 ms
ides_jmmaj_prac=# select 'hello\nworld';
WARNING:  nonstandard use of escape in a string literal
ŘÁDKA 1: select 'hello\nworld';
                ^
DOPORUČENÍ:  Use the escape string syntax for escapes, e.g., E'\r\n'.
┌──────────┐
│ ?column? │
╞══════════╡
│ hello   ↵│
│ world    │
└──────────┘
(1 row)

Time: 0,496 ms

Отключить предупреждения:

set escape_string_warning to off;

Вероятно, \r следует удалить. PostgreSQL с использованием конца строк Unix - только \n (я его не тестировал).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню