2016-03-26 2 views
1

Я новичок в PostgreSQL и odo. Я создал следующее: (Я работаю над Ubuntu).Odo CSV-файл в базу данных PostgreSQL

Я создал суперпользователяtestuser и с этим пользователем (роль) Я создал базу данных PostgreSQL testuser (запустив psql, а затем CREATE DATABASE TestUser;). В этой базе данных находится таблица под названием testtable. У меня нет проблем с добавлением в эту базу данных psycopg2. Но я столкнулся с модулем odo для python. Поскольку моя цель - загрузить 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 

Примечание: вместо <password> У меня есть пароль TestUser в.

Может быть, это очевидно и я должен реализовать .. (как и в предыдущем пункте here), но я думал, что PostgreSQL поддерживается (поскольку PostgreSQL упоминается несколько раз там, с примерами). Я попытался посмотреть here в разделе URI соединений, но не смог найти ошибку. И here - документация odo.

+0

Вы пытаетесь вставить CSV-файл в виде единого блока данных или в структурированную таблицу (или несколько таблиц). Понимаете ли вы основы СУБД, знаете ли вы структуру таблицы? Вы знаете структуру данных CSV (если есть)? – roadrunner66

+0

Да, я пытаюсь вставить его в шаге _single_ в одну таблицу (по крайней мере, начинать с этого, так как я предполагаю, что это основной шаг). Я где-то читал, что 'odo' использует для этого команду COPY. Я создал таблицу, например: «CREATE TABLE testtable (идентификатор последовательного PRIMARY KEY, целое число возраста, имя varchar); и тестирование csv выглядит так: «25, John \ n34, Petr», '\ n' представляет новую строку. – quapka

ответ

2

Я использовал odo для вставки файла csv в postgresql, поэтому он поддерживается. URI и код соединения по существу такие же, как у меня. У вас установлен пакет sqlalchemy? Я считаю, odo использует как sqlalchemy, так и psycopg2 в фоновом режиме. Я смог повторить вашу ошибку в системе без sqlalchemy, и установка sqlalchemy заставила меня пройти мимо ошибки.

+0

Это действительно так. Я не установил sqlalchemy .. Я думал, что я получу ошибку _standard_ import, отсутствующую. Я попробую! Спасибо – quapka

+0

Я нашел аналогичную [проблему] (https://github.com/blaze/odo/issues/279) на github с тем же разрешением. Это не связано конкретно с postgres, но я полагаю, что базовый код возвращается к тому же источнику для большинства реализованных баз данных. – root

+0

Хорошо, спасибо. Кстати, разве вы не знаете, работает ли преобразование из xls-> csv? Я не имею его передо мной, но я думаю, что у меня была аналогичная ошибка с 'odo ('', 'my.csv')'. Я чувствую себя глупым, так как одо кажется очень простым в использовании, или это правда, чтобы быть правдой? – quapka