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

时间:2013-09-10 06:15:51

标签: c# sql database postgresql newline

我从mySQL导出数据并将其导入 PostgreSQL的。 除了一件事,一切都很顺利。

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

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

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

2 个答案:

答案 0 :(得分:7)

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

UPDATE your_table
SET your_column = 
    replace(replace(replace(replace(your_column,
        '\r', E'\r'),
        '\n', E'\n'),
        '\t', E'\t'),
        '\\', '\');

请注意,这可能会导致一些错误,例如,如果它真的应该\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_strings设置为off(不推荐,但您可以在导入期间执行此操作,具体取决于此过程的执行方式,它会起作用)。

答案 1 :(得分:0)

新行字符会根据其来源或显示位置(Windows / Web)而改变。

就删除新行字符而言,请查看this