我从 mySQL 导出数据并将它们导入 PostgreSQL。一切都很顺利,除了一件事。
mySQL 中的许多文本字段中都有换行符,现在它们在 PostgreSQL 中作为 \r\n 导入。什么 char 代表 PostgreSQL 中的新行?
我在我的 C# 程序中使用来自 mySQL db 的数据。它正确显示新行。现在它在文本中显示 \r\n 。
我试图用\n 或\n 替换所有\r\n。没有任何效果。
我从 mySQL 导出数据并将它们导入 PostgreSQL。一切都很顺利,除了一件事。
mySQL 中的许多文本字段中都有换行符,现在它们在 PostgreSQL 中作为 \r\n 导入。什么 char 代表 PostgreSQL 中的新行?
我在我的 C# 程序中使用来自 mySQL db 的数据。它正确显示新行。现在它在文本中显示 \r\n 。
我试图用\n 或\n 替换所有\r\n。没有任何效果。
如果您已经错误地导入了它,并且假设所有数据都被转义,您可以按如下方式更新值:
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
(不建议这样做,但您可以在导入期间执行此操作,具体取决于此过程的制作方式,它将起作用)。
换行符会根据它来自或显示的位置(Windows/Web)而改变。
就删除换行符而言,看看这个