Страница 2 из 2

Re: Экпорт данных из Postgresql в файл

Добавлено: 29 июн 2016, 19:04
Ariki
Странно, прямому слэшу там взяться неоткуда. Его точно нет в самих данных? У меня все строки с кавычками экспортировались адекватно. Команда COPY преобразовала их в двойные кавычки в файле CSV, а скрипт - обратно в одинарные.

Re: Экпорт данных из Postgresql в файл

Добавлено: 30 июн 2016, 09:40
kasandra
Вы правы, там прямого слеша нет. Это моя ошибка была. Благодарю за скрипт.



Скажите, а можно сделать так, что б названия результирующих файлов брались с выгруженного довыкумента, например со второго столбца.
Сориентируйте, что для этого нужного?

Re: Экпорт данных из Postgresql в файл

Добавлено: 30 июн 2016, 11:35
Ariki
Можно, конечно. Замените выражение, в котором формируется имя файла,

Код: Выделить всё

output_prefix + '_{0:06d}.txt'.format(i)
на или, если хотите добавить путь к каталогу и расширение, на что-нибудь вроде

Код: Выделить всё

'{0}/{1}.txt'.format(output_prefix, row[1])

Re: Экпорт данных из Postgresql в файл

Добавлено: 30 июн 2016, 18:26
kasandra
Пробовала писать так:

Код: Выделить всё

import csv
import sys

input_filename = sys.argv[1]
output_prefix = sys.argv[2] if len(sys.argv) > 2 else 'output'

with open(input_filename, 'rb') as input_file:
    reader = csv.reader(input_file, delimiter='\n', quotechar='"')
    for i, row in enumerate(reader):
        with open(row[1], 'w') as output_file:
            output_file.write(row[0])
И так:

Код: Выделить всё

import csv
import sys

input_filename = sys.argv[1]
output_prefix = sys.argv[2] if len(sys.argv) > 2 else 'output'

with open(input_filename, 'rb') as input_file:
    reader = csv.reader(input_file, delimiter='\n', quotechar='"')
    for i, row in enumerate(reader):
        with open('{0}/{1}.txt'.format(output_prefix, row[1]), 'w') as output_file:
            output_file.write(row[0])
В обоих случаях пишет, что list index out of range. То есть не видит второй столбец, если я верно понимаю. Но я пробовала разный разделитель использовать в csv файле и просто в ручную создавать произвольный документ, не срабатывает.

А если заменить на row[0], то пишет, что не находит файл с указаным именем.

Что я сделала не верно?

Re: Экпорт данных из Postgresql в файл

Добавлено: 30 июн 2016, 19:25
Ariki
Это я забыл про разделитель. В скрипте поменяйте delimiter='\n' на delimiter=',' или что вы там используете в качестве разделителя.

Re: Экпорт данных из Postgresql в файл

Добавлено: 30 июн 2016, 20:17
kasandra
Все работает отлично, благодарю за помощь. :D