У меня есть файл CSV с некоторыми данными транзакций. Скажем, дата, объем, цена и направление (продажа / покупка). Кроме того, есть идентификатор для каждой транзакции, и в каждой закрывающей транзакции (более новой) есть ссылка на соответствующую транзакцию. Классическая ссылка на базу данных.

Теперь я хочу сделать немного статистики и нарисовать несколько графиков. Это может быть сделано через Octave, LaTeX/TikZ, Gnuplot или что-то еще. Для этого мне нужно купить и продать цену в один ряд. Моя мысль состояла в том, чтобы предварительно обработать CSV, чтобы получить другой CSV, содержащий необходимую информацию, а затем сделать статистику. В конце я хотел бы иметь решение, основанное на сценариях, а не на электронной таблице, поскольку данные могут часто меняться (экспортируются из онлайн-базы данных).

Мое реальное решение (см. Http://paste.ubuntu.com/6262822/ ) - это скрипт bash, который построчно анализирует CSV и проверяет, существует ли соответствующая транзакция. Если найдено, новая строка записывается в CSV назначения. Если не напечатано предупреждение.

Плохие новости: для каждой строки в исходном файле я должен прочитать весь файл несколько раз. Это вызывает длительное время работы 10 секунд для 300 строк. Поскольку номер строки может скоро увеличиться (> 10 000 строк), это не идеально. Я знаю, что в скрипте нужно открыть много оболочек, которые могут вызвать проблемы с производительностью.

Теперь мои вопросы:

  • Является ли bash/awk/sed/.... хорошим способом сделать что-то?
  • Должен ли я сначала импортировать все данные в "настоящую" локальную базу данных для использования SQL?
  • Есть ли простой способ добиться желаемых результатов?

1 ответ1

0

Фактически я решил проблему с помощью PostgreSQL (уже был доступен на ноутбуке). Я добавил данные через \copy во временную таблицу и сделал несколько просмотров, выбор и т.д. В конце концов, все (загрузка данных, создание нескольких выходных файлов и сводных таблиц) занимает менее полсекунды. Отлично.

Благодарю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .