Проблемы с PSQL автоматически опускают нижний регистр выполненного запроса - PullRequest
0 голосов
/ 11 мая 2019

У меня проблемы с выполнением следующего запроса. Есть ли способ сохранить заглавные буквы с помощью запроса psql? Я пробовал цитаты, которые не работают, и я пробовал одинарные кавычки, в этом случае я получаю синтаксическую ошибку. ПРИМЕЧАНИЕ. Похоже, что столбцы были созданы с использованием кавычек, хорошо, но как мне тогда ссылаться на кавычки из команды?)

psql bash CLI

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "\copy table_name(fileName, time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'"

Результат:

ERROR:  column "filename" of relation "table_name" does not exist

1 Ответ

1 голос
/ 11 мая 2019

PostgreSQL обрабатывает идентификатор, такой как имя таблицы, как строчные, если вы не заключите его в кавычки.

Вы сказали, что двойные кавычки не работают.Это, вероятно, потому что вы не правильно поняли цитатуЦитировать в оболочке сложно.Вы должны завершить строку двойных кавычек, окружающую весь запрос, просто чтобы запустить строку одинарных кавычек, которая содержит двойные кавычки:

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "\copy table_name("'"fileName"'", time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'"

Вы можете использовать тот факт, что psql также принимает команду через стандартный ввод, которыйпозволяет писать это следующим образом, не беспокоясь о кавычках:

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME <<SQL
  \copy table_name("fileName", time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'
SQL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...