如何从列中删除多余的字符?

时间:2014-04-16 16:35:38

标签: postgresql csv openoffice.org

我有一张桌子,上面有客户/电话/城市/州/邮编等。 偶尔,我将从.csv文件导入信息,有时邮政编码格式如下:xxxxx-xxxx我只需要它是一般的5位邮政编码。

如何删除最后5个字符,而不必逐个单元格地从Excel中删除(这就是我现在正在做的事情)?

由于

编辑:这是我在克雷格的建议之后使用的,它起作用了。但是,有些zip条目是加拿大邮政编码,通常它们的格式为x1x-x2x。运行此操作将删除该字段中的最后一个字符。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

你需要做以下三个想法中的一个:

  • 使用ETL工具在插入期间过滤数据;
  • COPY进入TEMPORARYUNLOGGED表,然后执行INSERT INTO real_table SELECT ...,使用适当的substring(...)电话转换数据;或
  • 编写一个简单的Perl / Python /任何读取csv的脚本,根据需要对其进行转换,然后将结果插入到PostgreSQL中。我将Python与csv模块和psycopg2的copy_from一起使用。

这样的insert into ... select可能如下所示:

INSERT INTO real_table(col1, col2, zip)
SELECT
  col1,
  col2,
  substring(zip from 1 for 5)
FROM temp_table;