2

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

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

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

我试图用\n 或\n 替换所有\r\n。没有任何效果。

4

2 回答 2

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_stringsoff(不建议这样做,但您可以在导入期间执行此操作,具体取决于此过程的制作方式,它将起作用)。

于 2013-09-10T13:07:42.293 回答
0

换行符会根据它来自或显示的位置(Windows/Web)而改变。

就删除换行符而言,看看这个

于 2013-09-10T06:26:39.280 回答