什么字符代表postgresql中的新行?

gem*_*reg 2 c# sql database postgresql newline

我从mySQL导出数据并将它们导入PostgreSQL.除了一件事,一切都很顺利.

mySQL中的很多文本字段都有换行符,现在它们在PostgreSQL中导入为\ r \n.什么char表示PostgreSQL中的新行?

我在我的C#程序中使用来自mySQL db的数据.它正确显示新行.现在它在文本中显示\ r \n.

我试图用\n或\n替换所有\ r \n.什么都行不通.

Mat*_*sOl 7

如果您已经导入错误,并假设所有数据都已转义,您可以更新这些值:

UPDATE your_table
SET your_column = 
    replace(replace(replace(replace(your_column,
        '\r', E'\r'),
        '\n', E'\n'),
        '\t', E'\t'),
        '\\', '\');
Run Code Online (Sandbox Code Playgroud)

请注意,这可能会导致一些错误,例如,如果它确实应该\r(未转义).

PostgreSQL遵循SQL ANSI,这意味着字符串的唯一转义是两个单引号,例如'I''m a rock star'将生成I'm a rock star,但'I\'m a rock star'会导致错误,因为反斜杠不是转义字符,所以你关闭字符串之后m.如果(1)你E在字符串之前使用字母(如样本中),这个规则可以被打破,这会导致反斜杠转义(像往常一样); 或(2)如果您将GUC参数设置standard_conforming_stringsoff(不推荐,但您可以在导入期间执行此操作,具体取决于此过程的执行方式,它将起作用).