我从mySQL导出数据并将它们导入PostgreSQL。一切都很顺利,除了一件事。
mySQL中的许多文本字段都有换行符,现在它们作为\r\n导入到PostgreSQL中。在PostgreSQL中,什么字符代表新行?
我在C#程序中使用来自C# db的数据。它正确地显示了新的行。现在它在文本中显示\r\n。
我试着用\n或\n替换所有\r\n。
发布于 2013-09-10 13:07:42
如果您已经导入了错误的数据,并且假设所有数据都是转义的,那么您可以按如下方式更新这些值:
UPDATE your_table
SET your_column =
replace(replace(replace(replace(your_column,
'\r', E'\r'),
'\n', E'\n'),
'\t', E'\t'),
'\\', '\');注意,这可能导致一些错误,例如,如果它真的应该是\r (而不是转义)。
PostgreSQL遵循SQL,这意味着字符串的唯一转义是两个单引号,例如,'I''m a rock star'将生成I'm a rock star,但'I\'m a rock star'将导致错误,因为反斜杠不是转义字符,因此在m之后关闭了字符串。如果(1)在字符串之前使用字母E (在示例中),这会导致反斜杠转义(与往常一样);或者(2)如果您将GUC参数standard_conforming_strings设置为off (不建议这样做,但您可以在导入期间这样做,这取决于该进程的工作方式),则可以打破此规则。
发布于 2013-09-10 06:26:39
新的行字符将根据其来自何处或显示在何处(Windows/Web)而改变。
关于删除新行字符,请看一下this
https://stackoverflow.com/questions/18711872
复制相似问题