首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg_restore分隔符

pg_restore分隔符
EN

Stack Overflow用户
提问于 2012-11-21 09:56:59
回答 2查看 283关注 0票数 1

我有一个Postgresql转储(用pg_dump创建,自定义压缩格式)。我想将它转换为pg_restore,但是用管道来代替制表符分隔。我已经尝试过在tr中使用管道,但我确实有大量包含制表符的文本字段,而且tr显然不支持引号。有数百亿的输出行(压缩文件大于500 GB),所以我确实需要一个相对有效的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2013-11-19 21:06:21

如果必须很快,请使用C。保存

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int c, quoted = 0;
    while (c = getchar(), c != EOF)
    {
        if (c == '"') quoted = !quoted;
        if (c == '\t' && !quoted) c = '|';
        putchar(c);
    }
    return quoted;
}

例如,作为bartab.c,用gcc bartab.c -o bartab编译,并通过管道通过结果程序。

票数 1
EN

Stack Overflow用户

发布于 2013-04-13 16:09:14

您最好的选择是使用

代码语言:javascript
复制
COPY tablename TO STDOUT WITH CSV DELIMITER '|';

从db内部执行此操作,而不是使用转储文件。

第二种选择是使用-- INSERT开关进行新的转储,然后解析以INSERT开头的行。这也将是缓慢的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13485238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档