Команда копирования для вставки файла CSV - специальные символы Escape - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь выполнить массовую вставку в postgres db, используя команду copy из файла csv. Все столбцы в таблице БД имеют тип character_varying (1024). Команда копирования не выполняется для определенных значений, которые заключены в двойные кавычки. Например: «TODD'S JAMES RENO PHCY, INC.»

Моя команда копирования выглядит следующим образомниже:

    \copy file_tmp FROM  /srv/data0/transfer/data_2.csv  USING DELIMITERS ',' 

Не могли бы вы помочь, как избежать этих специальных символов и заставить это работать?

1 Ответ

1 голос
/ 25 октября 2019

Несмотря на то, что вы указали разделитель, вы не указали формат, поэтому он по-прежнему использует «текст». В «текстовом» формате экранирование выполняется с помощью обратной косой черты, а не кавычек.

Кроме того, «ИСПОЛЬЗОВАНИЕ РАЗДЕЛИТЕЛЕЙ» является чрезвычайно устаревшим синтаксисом.

Возможно, вы хотите что-то вроде:

\copy file_tmp FROM  /srv/data0/transfer/data_2.csv  WITH (FORMAT CSV)

Вам не нужно указывать разделитель, потому что он по умолчанию равен ',' при использовании формата CSV.

Конечно, это может привести к сбою в тех частях данных, которые вы нам не показали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...