скопируйте данные из текстового файла.rpt, чтобы вставить их в postgresql в pgadmin

#postgresql #pgadmin

#postgresql #pgadmin

Вопрос:

Когда я запускаю:

 COPY con (date,kgs) 
FROM 'H:Sir\data\reporting\hi.rpt'
WITH DELIMITER ','
CSV HEADER 
    date AS 'Datum/Uhrzeit'
    kgs  AS 'Summe'
 

Я получаю сообщение об ошибке:

 WARNING:  nonstandard use of \ in a string literal
LINE 2: FROM 'H:Sudhir\Conair data\TBreporting\hi.txt'
             ^
HINT:  Use the escape string syntax for backslashes, e.g., E'\'.
 

У меня уже давно возникла эта проблема. Помогите?

Комментарии:

1. Ваш вопрос совершенно неясен. Пожалуйста, уточните это.

2. Что такое файл «text.rpt»? Какое приложение создало его? Какой это формат — это просто CSV или что-то еще? Какую версию PostgreSQL вы используете?

3. это hi.rpt crystal report файл??

4. «hi.rpt» — это отчет, сгенерированный программным обеспечением. я хочу извлечь конкретные данные из этого отчета, например, дату n вес n поместить их в базу данных для оценки.

5. Я использую PostgreSQL 9.0

Ответ №1:

Это не ошибка, это просто предупреждение. Это не имеет ничего общего с содержимым файла, это связано с настройкой PostgreSQL и синтаксисом COPY команды, который вы используете.

Вы используете PostgreSQL после версии 8.1 с standard_conforming_strings выключенным — либо до версии 9.1 (которая по умолчанию отключена), либо более новую версию с отключенным вручную.

Это приводит к обратным косым чертам в строках, например bobted , интерпретируется как экранирование, так что строка будет bob<tab>ted с буквальной табуляцией, как t экранирование для табуляции.

Подобная интерпретация строк противоречит стандарту SQL, в котором нет экранирования обратной косой черты в стиле C. Несколько лет назад команда PostgreSQL решила перейти на стандартный способ работы с SQL. По соображениям обратной совместимости это было сделано в два этапа:

  • Добавьте standard_conforming_strings опцию для использования стандартной интерпретации строк SQL, но по умолчанию она отключена. Выдает предупреждения при использовании нестандартной интерпретации строк PostgreSQL. Добавьте новый E'string' стиль, позволяющий приложениям явно запрашивать escape-обработку в строках.
  • Несколькими выпусками позже, включите standard_conforming_strings по умолчанию, как только пользователи обновят и исправят предупреждения, выдаваемые их приложениями. Предположительно.

Выход для is \ . Таким образом, «удвоение» обратной косой черты, как у вас (или используемого вами инструмента), выполнено правильно. PostgreSQL выдает предупреждение, потому что он не знает, имели ли H:Sir\data\reporting\hi.rpt вы в виду буквально H:Sir\data\reporting\hi.rpt (как указано в спецификации SQL) или H:Sirdatareportinghi.rpt (как это делал PostgreSQL, вопреки стандарту), когда вы писали.

Таким образом, в вашем запросе нет ничего плохого. Если вы хотите избавиться от предупреждения, либо включите standard_conforming_strings , либо добавьте явное E'' в свою строку.

Комментарии:

1. Спасибо, Крейг, я включил standard_conforming_strings.

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

3. @user3732694 Пожалуйста, отмените редактирование и отправьте как новый вопрос . Вернитесь к этому для контекста.

4. я задал новый вопрос, но ‘a_horse_with_no_name’ пометил мой вопрос как дублирующий. дело в том, что я до сих пор не получил ответа, можете ли вы мне помочь.

5. @user3732694 снова открылся и ответил. Пожалуйста, примите это, поскольку оно ответило на заданный вами вопрос.