使用 postgres 复制命令导出数据时修剪 CHAR 列中的数据
使用 COPY 命令 (http://www.postgresql.org/docs/ 9.1/static/sql-copy.html) 我在生成的文本文件中将每个 CHAR 列都填满了空格。
在这个过程中有什么办法可以修剪它们吗?
Using the COPY command (http://www.postgresql.org/docs/9.1/static/sql-copy.html) I get each CHAR column filled up with spaces in the resulting text file.
Is there any way to trim them during this procedure ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,这与 COPY 无关。数据类型
char
根据定义用空白填充。这是该列的正确内容。阅读有关数据类型的手册。char
是计算机系统在可变字符串长度方面遇到困难的时代的继承,现在很少有用。您可以像 @mu 描述的那样更改导出。但是,要永久解决此问题,请在表列中使用text
数据类型(或varchar
)。Actually, that has nothing to do with COPY. The data type
char
is blank-padded per definition. That is the correct content of the column. Read the manual about data types.char
is an inheritance from an era where computer systems had a hard time with variable string length and is rarely useful nowadays. You can change this for exports like @mu describes. However, to fix this for good, use thetext
data type (orvarchar
) in your table-columns.您可以使用 COPY 指定查询而不是表名,以便添加
TRIM
调用以去除char(n)
列中的前导和尾随空格:You can specify a query instead of a table name with COPY so you can add a
TRIM
call to strip off the leading and trailing whitespace from yourchar(n)
columns: