Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Импорт данных из текстового файла / 8 сообщений из 8, страница 1 из 1
14.10.2015, 19:10
    #39076852
tortilka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
Есть много текстовых файлов (.txt) которые надо перенести в таблицу PosgreSQL. Текстовые файлы такого формата:
#
Data1
#
Data2
#
Data3
#

Пытаюсь загнать данные вот таким скриптом:
Код: sql
1.
2.
COPY any_table
from  'G:\data.txt'  WITH (FORMAT  text, delimiter '#') ;


Но она работает только когда данные в файле в одну строчку:

#Data1#Data2#Data3#

Подскажите пожалуйста как с этим бороться, потому что файлов много и сделать их все в строчку невозможно.
...
Рейтинг: 0 / 0
14.10.2015, 20:09
    #39076909
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
tortilkaфайлов много и сделать их все в строчку невозможно.если изобрели формат, который не знаете, как засунуть в copy, то надо изобрести программу для загрузки или преобразования файлов.
Если каждый файл это одна строка в таблице, то разумно объединить их в один нормальный csv и не парить базу много-copyством. Скажу по секрету, что программа преобразования файлов изобретена уже лет 40 назад - sed в руки...
...
Рейтинг: 0 / 0
15.10.2015, 10:28
    #39077283
tortilka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
если изобрели формат, который не знаете, как засунуть в copy, то надо изобрести программу для загрузки или преобразования файлов.
Если каждый файл это одна строка в таблице, то разумно объединить их в один нормальный csv и не парить базу много-copyством. Скажу по секрету, что программа преобразования файлов изобретена уже лет 40 назад - sed в руки...
Формат не изобретали. его просто дали из другой системы и не спросили как нам удобнее. То что есть программы для редактирования файлов, да и самим можно написать что то вроде, понятно. Просто хотелось узнать возможности Postgres, что он может? Или что я делаю не так? Узнать свои ошибки.
...
Рейтинг: 0 / 0
15.10.2015, 12:10
    #39077458
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
tortilka,

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

под windows (судя по пути к файлу) с этим наверное сложнее, но тоже решаемо.
...
Рейтинг: 0 / 0
15.10.2015, 14:20
    #39077678
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
tortilka возможности Postgresпг это sql-субд и возможности соответствующие.
читайте файлы как файлы и разбирайте на поля - скомбинировать пару стандартных функций, но еще ведь список файлов стравить им...
куда проще одной командой типа sed слить их построчно в один. и далее скормить той же copy.
...
Рейтинг: 0 / 0
16.10.2015, 11:38
    #39078425
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
tortilkaПытаюсь загнать данные вот таким скриптом:
Код: sql
1.
2.
COPY any_table
from  'G:\data.txt'  WITH (FORMAT  text, delimiter '#') ;


а так?
Код: sql
1.
2.
COPY any_table
from  'G:\data.txt'  WITH (FORMAT  text, delimiter '#'|| chr(10)|| chr(13)) ;
...
Рейтинг: 0 / 0
18.10.2015, 22:19
    #39079554
tortilka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
roadstertortilkaПытаюсь загнать данные вот таким скриптом:
Код: sql
1.
2.
COPY any_table
from  'G:\data.txt'  WITH (FORMAT  text, delimiter '#') ;


а так?
Код: sql
1.
2.
COPY any_table
from  'G:\data.txt'  WITH (FORMAT  text, delimiter '#'|| chr(10)|| chr(13)) ;



Спасибо, Было бы здорово, если работало. Но... может что то поправить ?

ОШИБКА: ошибка синтаксиса (примерное положение: "||")
...
Рейтинг: 0 / 0
19.10.2015, 08:39
    #39079685
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт данных из текстового файла
tortilkaНо... может что то поправить ?может и поправить.
я не знаток PG.
смысл в том, что у вас в файле разделитель не один символ, а несколько. почитайте про конкатенацию, а точнее про конкатенацию спецсимволов в строку.
теоретически можно сабстром каким поменять переход на новую строку на пустой символ при разборе, но при большом объёме файла как минимум сам запрос ляжет, а может и сервер заодно положить.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Импорт данных из текстового файла / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]