在 Mac OSX (iTerm2) 上使用终端,除 postgres 外没有任何外部应用程序,我想在一个相当大的 (52 MB) pg_dump 数据文件上运行一些正则表达式查找/替换,因为它正在导入到 PostgreSQL 数据库中。我需要在转储文件到达 PostgreSQL 之前执行此操作,因为我必须转换创建和修改表的传入 SQL 查询。
我用来导入数据的 shell 命令是:
psql MyDatabase < mydata.sql
有没有办法通过正则表达式查找/替换过滤器来传输数据?我可以使用 grep 等 native Linux 命令行实用程序执行某些操作吗?
或者,我如何批处理我的正则表达式并将它们应用到我的转储文件,然后将更改保存到新文件?
最佳答案
您可以使用理解正则表达式的 sed
。
例如,要用“anotherschema”替换所有出现的被单词边界包围的“myschema”,您可以使用:
sed -e 's/\bmy\(schema\)\b/another\1/g' mydata.sql | psql MyDatabase
关于bash - 如何在导入期间对 pg_dump 数据运行过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38259759/