我有一个postgresql转储(用pg_dump创建,自定义压缩格式)。我希望pg_将其还原为stdout,但将选项卡分隔替换为管道。我试过只使用tr中的管道,但我确实有大量的文本字段实际上包含制表符,tr显然不尊重引号。有数百亿个输出行(压缩文件大于500gb),所以我需要一个相对有效的解决方案。

最佳答案

如果一定要快,用c.save

#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编译,并通过管道通过生成的程序。

关于linux - pg_restore分隔符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13485238/

10-10 07:15