postgresql - 删除 Postgres 转储中的换行符

标签 postgresql import sed export

我正在尝试格式化 postgres 转储 (pg_dump) 以便能够使用 JDBC 连接导入它。 pg_dump 将包含换行符的文本字段导出为带有换行符的文本,因此当我稍后尝试使用 JDBC 导入时,我到达了行尾并且语句失败。

我想做的是获取转储,通过 sed 传递它并转义所有换行符,这样我最终每行有一个 INSERT 语句。问题是我不能只删除所有换行符,但我可以删除所有不匹配 this );\nINSERT INTO 的换行符。有没有一种简单的方法可以做到这一点?

更新: 示例如下所示:

INSERT INTO sometable (123, And here goes some text
with
newlines
in
it', 'some more fields');

我正在寻找的结果是这样的:

INSERT INTO sometable (123, And here goes some text\nwith\nnewlines\nin\nit', 'some more fields');

这样每个 INSERT 语句都在一行上,字符串的换行符被转义。

最佳答案

不是 sed 解决方案,但以下方法是否可行?

cat test_dump.txt | perl -pe "s/[^(\);INSERT INTO)]\n/\\$1\\n/"

关于postgresql - 删除 Postgres 转储中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711665/

相关文章:

postgresql - postgres - 从现有表中选择 * - psql 说表不存在

Python 导入之星创建隐藏命名空间?

java - 从 eclipse 中的 import 语句中查找引用的库

regex - 为 html 文件中的所有媒体链接添加前缀

postgresql - pg_stat_statements_reset() 权限在 Google Cloud SQL PostgreSQL 上被拒绝

postgresql - 根据 hstore 列的选择插入

mysql - 使用 sql 查询将元数据库中预配置的时间戳从 utc 格式转换为 ist

iphone - 已在项目中时找不到 xcode4 文件

sed - 遇到错误时防止sed写入

docker - 当 docker-compose run -e 调用我的环境时,Sed 在文件中