Как скопировать файл .out в postgresql?

У меня есть этот файл (предупреждение: потенциально небезопасный сайт загрузки файлов), который мне нужно вставить в базу данных с помощью Postgres и Java. Загрузите его и дайте мне знать, как я могу извлечь данные из этого файла. Я попробовал команду копирования. Во-первых, это не позволило мне использовать опцию заголовка. Я должен, как вы можете видеть из файла, копировать данные с 4-й строки и далее. Другое дело разделитель. Если вы читаете файл в блокноте ++, вы можете видеть их как правильные столбцы, но разделителя как такового нет. Я пробовал и столкнулся с этими проблемами. Пожалуйста, помогите мне получить пользовательский запрос. Или другой подход, который может достичь того, что я хочу сделать. Спасибо!

Изменить: я использовал более безопасную ссылку для загрузки файла. Надеюсь, что это работает.


person CodingInCircles    schedule 13.10.2012    source источник
comment
Попробуйте показать отрывок из файла здесь, а не просить всех скачать его. Suuure, я скачаю этот случайный файл, когда кто-нибудь пришлет мне ссылку, это безопасно. Пока вы это делаете, попробуйте указать свою версию PostgreSQL и откуда взялся этот загадочный файл .out, т.е. что его создало.   -  person Craig Ringer    schedule 13.10.2012
comment
Полагаю, вам придется написать свой собственный синтаксический анализатор для этого странного формата, который либо (а) преобразует его в чистый разумный CSV, либо (б) напрямую подключается к PostgreSQL и вставляет извлеченные данные. Языки сценариев, такие как Perl, Python и т. д., являются хорошим выбором для такой работы.   -  person Craig Ringer    schedule 13.10.2012
comment
Вы правы.. Я должен был просто поместить некоторые данные здесь, но я не был уверен, что форматирование получится правильным.. И поэтому я подумал, что это может быть лучше. Файл .out является результатом выполнения скрипта для извлечения данных о погоде из mesowest. Я использую последнюю версию PostgreSQL. Что вы подразумеваете под прямым подключением к PostgreSQL и вставкой данных?   -  person CodingInCircles    schedule 13.10.2012
comment
Что-то вроде драйвера Python psycopg2 или Perl DBI и DBD::Pg. Если это просто данные с фиксированной шириной, то предложение Криса намного проще. Что касается файла - вы используете хостинг, который требует адрес электронной почты для отправки ссылки. Никто не захочет этого делать.   -  person Craig Ringer    schedule 13.10.2012
comment
Стрелять! Я этого не знал .. Извините .. Я перезагружу и обновлю вопрос. Я поищу Perl и посмотрю, что получится. А на Java это сделать нельзя?   -  person CodingInCircles    schedule 13.10.2012
comment
Похоже, вы работаете с файлом фиксированного формата. См. этот вопрос для решения вашей проблемы: java" title="как лучше всего анализировать форматированный файл с фиксированной шириной в java">stackoverflow.com/questions/1609807/. В следующий раз, пожалуйста, выкладывайте выдержки из файлов, а не ссылки на сомнительные сайты для скачивания. Тот второй, который вы опубликовали, пытался загрузить какой-то исполняемый файл на мою машину, это угроза. Ответ на этот вопрос был бы дан через несколько минут.   -  person Craig Ringer    schedule 13.10.2012


Ответы (1)


Похоже, вы делаете файлы с фиксированной шириной. COPY не обрабатывает их, поэтому лучше всего загрузить электронную таблицу, импортировать файл (большинство из них может обрабатывать фиксированную ширину), а затем экспортировать в формате csv. Затем вы можете использовать COPY.

person Chris Travers    schedule 13.10.2012
comment
Хорошая идея использовать электронные таблицы в качестве основного инструмента ETL. - person Craig Ringer; 13.10.2012
comment
Проблема с использованием Excel заключается в том, что когда я открываю файл в Excel, вся строка занимает одну ячейку. Итак, у меня есть все данные от A1 до A30000, а не в разных ячейках в одной строке. :/ - person CodingInCircles; 13.10.2012
comment
Прошло некоторое время с тех пор, как я использовал Excel, но в прошлый раз, когда я открывал мастер, мне пришлось выбирать фиксированную ширину вместо разделителя. См. раздел office.microsoft.com/en-us. /excel-помощь/ - person Chris Travers; 13.10.2012
comment
Спасибо! Я обязательно посмотрю это и сообщу вам, как это сработало. Спасибо! :) - person CodingInCircles; 13.10.2012
comment
@CraigRinger Я использую электронные таблицы для этого с относительной частотой. - person Chris Travers; 13.10.2012
comment
@ChrisTravers Похоже на ответы на этот вопрос также предложите несколько хороших альтернатив, таких как библиотека Flatworm. - person Craig Ringer; 13.10.2012