Чтение и хранение данных CSV построчно в postgres - PullRequest
1 голос
/ 14 апреля 2011

Я хочу скопировать данные CSV из разных файлов, а затем сохранить в таблице.Но проблема в том, что количество столбцов в каждом CSV-файле различается, поэтому у некоторых CSV-файлов есть 3 столбца, а у некоторых их 4. Поэтому, если в файле 4 столбца, я хочу просто проигнорировать четвертый столбец и сохранить только первые три,

Используя следующий код, я могу скопировать данные в таблицу, если есть только 3 столбца,

CREATE TABLE ImportCSVTable (
          name varchar(100),
                  address varchar(100),
                  phone varchar(100));




COPY ImportCSVTable (name , address , phone)
         FROM 'path'
        WITH DELIMITER ';' CSV QUOTE '"';

Но я с нетерпением жду возможности проверить каждую строку отдельно и затем сохранить ее вТаблица.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

Поскольку вы хотите читать и сохранять по одной строке за раз, модуль Python CSV должен облегчить чтение первых 3 столбцов из файла CSV независимо от каких-либо дополнительных столбцов.

Вы можете создать оператор INSERT и выполнить его с предпочитаемым вами модулем Python-PostGreSQL. Я использовал PyPgSQL в прошлом; не знаю, что сейчас.

#!/usr/bin/env python
import csv
filesource = 'PeopleAndResources.csv'
with open(filesource, 'rb') as f:
    reader = csv.reader(f, delimiter=';', quotechar='"')
    for row in reader:
        statement = "INSERT INTO ImportCSVTable " + \
        "(name, address, phone) " + \
        "VALUES ('%s', '%s', '%s')" % (tuple(row[0:3]))
        #execute statement
0 голосов
/ 14 апреля 2011

Вы также можете просто сделать так, чтобы в вашей входной таблице был четвертый столбец, который можно обнулять, а затем после импорта удалить дополнительный столбец.

0 голосов
/ 14 апреля 2011

Используйте текстовую утилиту, чтобы отрубить четвертый столбец.Таким образом, все ваши входные файлы будут иметь три столбца.Вам следует позаботиться о некоторой комбинации awk, cut и sed, но это зависит от того, как выглядят ваши столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...