我有一张包含客户/电话/城市/州/ zip /等的表格。 有时,我会从 .csv 文件导入信息,有时邮政编码的格式如下:xxxxx-xxxx,我只需要它是一个通用的 5 位邮政编码。
如何删除最后 5 个字符,而不必从 Excel 中逐个单元格地删除(我现在正在这样做)?
谢谢
编辑:这是我根据 Craig 的建议使用的,并且有效。但是,一些邮政编码条目是加拿大邮政编码,并且通常格式为 x1x-x2x。运行它会删除字段中的最后一个字符。
我该如何补救?
最佳答案
您需要执行以下 3 个想法之一:
- 在插入过程中使用 ETL 工具过滤数据;
COPY
到TEMPORARY
或UNLOGGED
表中,然后执行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;
关于postgresql - 如何从列中删除多余的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23115210/