Я получил дамп 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, внутри поля цитаты?
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
(я его не тестировал).