Экпорт данных из Postgresql в файл
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Экпорт данных из Postgresql в файл
Странно, прямому слэшу там взяться неоткуда. Его точно нет в самих данных? У меня все строки с кавычками экспортировались адекватно. Команда COPY преобразовала их в двойные кавычки в файле CSV, а скрипт - обратно в одинарные.
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 09 апр 2014, 11:33
- Репутация: 2
Re: Экпорт данных из Postgresql в файл
Вы правы, там прямого слеша нет. Это моя ошибка была. Благодарю за скрипт.
Скажите, а можно сделать так, что б названия результирующих файлов брались с выгруженного довыкумента, например со второго столбца.
Сориентируйте, что для этого нужного?
Скажите, а можно сделать так, что б названия результирующих файлов брались с выгруженного довыкумента, например со второго столбца.
Сориентируйте, что для этого нужного?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Экпорт данных из Postgresql в файл
Можно, конечно. Замените выражение, в котором формируется имя файла,
на
или, если хотите добавить путь к каталогу и расширение, на что-нибудь вроде
Код: Выделить всё
output_prefix + '_{0:06d}.txt'.format(i)
Код: Выделить всё
row[1]
Код: Выделить всё
'{0}/{1}.txt'.format(output_prefix, row[1])
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 09 апр 2014, 11:33
- Репутация: 2
Re: Экпорт данных из Postgresql в файл
Пробовала писать так:
И так:
В обоих случаях пишет, что list index out of range. То есть не видит второй столбец, если я верно понимаю. Но я пробовала разный разделитель использовать в csv файле и просто в ручную создавать произвольный документ, не срабатывает.
А если заменить на 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(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])
А если заменить на row[0], то пишет, что не находит файл с указаным именем.
Что я сделала не верно?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Экпорт данных из Postgresql в файл
Это я забыл про разделитель. В скрипте поменяйте delimiter='\n' на delimiter=',' или что вы там используете в качестве разделителя.
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 09 апр 2014, 11:33
- Репутация: 2
Re: Экпорт данных из Postgresql в файл
Все работает отлично, благодарю за помощь.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей