使用 postgres 复制命令导出数据时修剪 CHAR 列中的数据

发布于 2024-12-20 20:47:06 字数 213 浏览 2 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

铃予 2024-12-27 20:47:06

实际上,这与 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 the text data type (or varchar) in your table-columns.

我偏爱纯白色 2024-12-27 20:47:06

您可以使用 COPY 指定查询而不是表名,以便添加 TRIM 调用以去除 char(n) 列中的前导和尾随空格:

copy (select trim(some_column), ... from some_table) to stdout with csv;

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 your char(n) columns:

copy (select trim(some_column), ... from some_table) to stdout with csv;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文