ruby-on-rails - 从bash将时间戳传递给psql
问题描述
我正在尝试在 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
的,因为时间戳和整个查询都使用单引号。
如果我尝试将时间戳用双引号括起来,它会认为它是一个列名并抛出错误。
如果我尝试将整个查询用双引号括起来并在其中使用单引号,那么我只会一遍又一遍地获取列的名称,而不是实际值。
我只是无法弄清楚正确的组合是什么。
解决方案
在 \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"})
推荐阅读
- swift - 如何实现允许子类的实例更改为同一类的另一个子类的实例的类结构
- node.js - getting redirected even with correct usr/pwd (express/passport-local)
- c++ - How to draw a flat plane in openGL by drawing triangles?
- swift - Make a NavigationView full screen on macOS
- reactjs - What is the best way to reuse form components in React?
- shell - 使用 shell 脚本拆分具有多个分隔符的字符串
- python - 有条件地合并文本文件中的行
- python - 无法测试 rest_framework.utils.serializer_helpers.ReturnList 的相等性
- python - 将dataFrame的多列转换为字典并存储在新列中
- reactjs - React.js:如何使用 react-admin 的 ImageField 显示 base64 图像