【问题标题】:fixed width data into postgres固定宽度数据到 postgres
【发布时间】:2014-01-01 21:01:25
【问题描述】:

寻找将 FIXED-Width 数据加载到 postgres 表中的好方法。我这样做是 sas 和 python 而不是 postgres。我想没有本地方法。这些文件有几 GB。由于某种原因(可能是内存问题),我看到的一种方法不适用于我的文件。在那里你加载为一个大列,然后解析成表。我可以使用 psycopy2 但由于内存问题宁愿不使用。任何有效的想法或工具。 pgloader 运行良好还是有本地方法?

http://www.postgresonline.com/journal/index.php?/archives/157-Import-fixed-width-data-into-PostgreSQL-with-just-PSQL.html

谢谢

【问题讨论】:

    标签: postgresql upload load fixed-width


    【解决方案1】:

    在 PostgreSQL 中没有方便的内置方法来摄取固定宽度的表格数据。我建议使用 Pentaho Kettle 或 Talend Studio 之类的工具来进行数据加载,因为它们擅长使用许多不同的文件格式。我不记得pg_bulkload 是否支持固定宽度,但怀疑不是。

    或者,您通常可以使用 Python 和 psycopg2 模块之类的东西编写一个简单的脚本,逐行加载固定宽度的数据并将其发送到 PostgreSQL。 psycopg2 通过copy_fromCOPY 命令的支持大大提高了效率。我没有在快速搜索中找到方便的 Python 固定宽度文件阅读器,但我确信它们就在那里。无论如何,您都可以使用任何您喜欢的语言 - Perl 的 DBIDBD::Pg 也可以,并且有数百万个用于 Perl 的固定宽度文件阅读器模块。

    【讨论】:

    • 在 python 中,struct module 被设计为基于格式字符串将异构数据解包为元组,因此它可以用于读取固定宽度的文本文件。
    • @furins 与 psycopg2 和 copy_from 结合使用很方便
    • 确实!我使用结构和迭代器在低内存环境中批量读取大型、遗留、固定文本转储(共享主机上的 django web-apps)
    【解决方案2】:

    Python Pandas 库有一个函数 pandas.read_fwf,效果很好。

    可以使用 python 读取数据,然后写入 Postgres 数据库。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2013-09-14
      • 2013-08-16
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2017-10-27
      相关资源
      最近更新 更多