我从mySQL导出数据并将其导入 PostgreSQL的。 除了一件事,一切都很顺利。
mySQL中的许多文本字段都有换行符,现在它们在PostgreSQL中导入为\ r \ n。什么char表示PostgreSQL中的新行?
我在我的C#程序中使用来自mySQL db的数据。它正确显示新行。现在它在文本中显示\ r \ n。
我尝试用\ n或\ n替换所有\ r \ n。什么都行不通。
答案 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