我有一个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/