gpt4 book ai didi

postgresql - 使用带有自定义分隔符的 postgres 按字符大小复制文本文件

转载 作者:行者123 更新时间:2023-11-29 13:39:04 24 4
gpt4 key购买 nike

我需要复制一个包含混淆分隔符的文本文件。我相信分隔符是空格。但是,一些列值是空的,我无法区分哪一列,这使得将数据加载到数据库变得更加困难,因为空间没有指示任何内容。因此,当我尝试 COPY 时,映射不正确并且我得到了错误:最后预期列之后的额外数据

我已经尝试将分隔符更改为逗号等,但我仍然遇到上述相同的错误。当我尝试使用适当的分隔符加载一些虚拟数据时,可以使用以下代码。

COPY usm00070219(HEADREC_ID,YEAR,MONTH,DAY,HOUR,RELTIME,NUMLEV,P_SRC,NP_SRC,LAT,LON) FROM 'D:\....\USM00070219-data.txt' DELIMITER ' ';

这是示例数据:

enter image description here它应该有 11 列,但第一行的数据只有 10,无法识别空值列。间距根本没有用!

有什么方法可以按字符大小作为分隔符分隔列并强制按给定的大小划分数据?

最佳答案

COPY 不是用来处理固定宽度的文本文件的。我可以想到两个选项:

  • 使用 COPY 将文件按原样加载到具有单个文本列的表中。然后使用 regexp_split_to_array 将其拆分为组件并将它们插入到另一个表中。

  • 您可以使用 file_fdw像上面那样创建一个只有一个文本列的外部表并对其进行操作。这节省了将文件加载到数据库中的时间。

  • a foreign data wrapper for fixed-width text files你可以试试。

关于postgresql - 使用带有自定义分隔符的 postgres 按字符大小复制文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58119845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com