【问题标题】:Odo a CSV file into PostgreSQL database将 CSV 文件放入 PostgreSQL 数据库
【发布时间】:2016-03-26 19:37:56
【问题描述】:

我是 PostgreSQL 和 odo 的新手。我创建了以下内容:(我正在使用 Ubuntu)。

我创建了 superuser testuser 并使用此用户(角色)创建了 postgresql 数据库 testuser(通过运行 psql 然后创建数据库 testuser;)。在这个数据库中有一个名为testtable 的表。我用psycopg2 插入这个数据库没有任何问题。但是我遇到了用于 python 的odo 模块。因为我的目标是将some_file.csv 加载到postgresql 数据库中,所以我想我会使用它。用法似乎相当简单

import odo
odo.odo('some_file.csv', 'postgresql://testuser:<password>@127.0.0.1:5432/testuser::testtable')

但它不起作用,我得到了

NotImplementedError: Unable to parse uri to data resource: postgresql://testuser:<password>@localhost:5432/testuser 

注意:改为&lt;password&gt;我有testuser的密码。

也许它是显而易见的,我必须实现它..(如最后一段here),但我认为postgresql是受支持的(因为postgresql在那里被提到过几次,并附有示例)。 我尝试在连接 URI 下查看 here,但找不到错误。而here 是 odo 文档。

【问题讨论】:

  • 您是尝试将 CSV 文件作为单个数据块插入还是插入到结构化表(或多个表)中。了解RDBMS的基础知识,了解表结构吗?您知道 CSV 数据的结构(如果有的话)吗?
  • 是的,我正在尝试将它插入到单个表中的 single 步骤中(至少从那开始,因为我认为这是基本步骤)。我在某处读到,odo 为此使用了 COPY 命令。我已经创建了表,例如像这样“CREATE TABLE testtable(id serial PRIMARY KEY, age integer, name varchar);”测试 csv 看起来像这样 "25, John\n34, Petr",\n 代表新行。

标签: python database postgresql csv odo


【解决方案1】:

我已经使用odo 将一个csv 文件插入到postgresql 中,所以它是受支持的。您的连接 URI 和代码与我的基本相同。您是否安装了 sqlalchemy 软件包?我相信odo 在后台同时使用sqlalchemypsycopg2。我能够在没有安装 sqlalchemy 的系统上复制您的错误,而安装 sqlalchemy 让我克服了错误。

【讨论】:

  • 可能真的是这样。我没有安装 sqlalchemy.. 我想我会得到 standard 导入丢失错误。我会试试的!谢谢
  • 我在 github 上找到了类似的issue,分辨率相同。它与 postgres 没有特别相关,但我想底层代码可以追溯到大多数已实现的数据库的同一源。
  • 好的,谢谢。顺便说一句,您不知道从 xls->csv 转换是否有效?我面前没有它,但我认为odo('&lt;abs_path_to_my.xls&gt;', 'my.csv') 有类似的错误。我觉得很笨,因为 odo 似乎真的很容易使用,还是 好得令人难以置信
  • 我收到一个类似的NotImplementedError 试图转换一个 xls 文件,但根据github 它实际上没有在这种情况下实现,而不是仅仅由于缺少包。
猜你喜欢
  • 2021-10-20
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多