Передача метки времени на psql от bash - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать сценарий копирования данных в ruby ​​/ rails, и у меня возникают проблемы при фильтрации по временной метке.

Вот мой запрос:

system(%Q{psql postgres://user:password@postgres --command '\copy (SELECT "id", "name" FROM some_table WHERE created_at > '2019-01-22 13:40') TO STDOUT WITH CSV'})

И у меня возникают проблемы с завершающими строками и временными метками.

Запрос как ошибка \copy: parse error at end of line Я думаю, потому что временная метка и весь запрос используют одинарные кавычки.

Если я пытаюсь обернуть временную метку в двойные кавычки, она считает, что это имя столбца, а также выбрасывает и выдает ошибку.

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

Я просто не могу понять, что такое правильная комбинация.

1 Ответ

0 голосов
/ 22 января 2020

Используйте двойные кавычки вокруг команды \ copy и ничего вокруг имен столбцов:

system(%Q{psql postgres://user:password@postgres --command "\copy (SELECT id, name FROM some_table WHERE created_at > '2019-01-22 13:40') TO STDOUT WITH CSV"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...