TextQL SQL-интерфейс для CSV, который сэкономит вам часы работы

22 Oct, 2023

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

9,109
🔱 296
👥 157

Знакомая ситуация? Получаете CSV-файл с данными, которые нужно быстро обработать — отфильтровать, сгруппировать или объединить с другой таблицей. Традиционные варианты: мучиться с Excel, писать скрипт на Python или загружать в базу данных. Но есть способ проще — TextQL.

Что такое TextQL и кому он пригодится

TextQL — это консольная утилита, которая превращает ваши CSV и TSV файлы во временную SQL-базу данных. Разработчики, аналитики и devops-инженеры оценят его за:

  • Мгновенный SQL-доступ к структурированным текстовым данным
  • Работу прямо в терминале без лишних конвертаций
  • Поддержку пайпов и потоковой обработки

Проще говоря, это как SQLite для CSV-файлов, но без необходимости предварительного импорта.

5 причин попробовать TextQL прямо сейчас

1. Знакомый SQL-синтаксис для CSV

textql -sql "SELECT name, COUNT(*) FROM data GROUP BY name" sales.csv

Никакого нового языка запросов — используете стандартный SQL. Причем с поддержкой JOIN между несколькими файлами!

2. Автоматическое определение типов данных

TextQL сам распознает:

Реклама
  • Числа (включая разные форматы)
  • Даты и время (поддерживает множество форматов)
  • Строки

Больше не нужно вручную указывать типы колонок.

3. Работа с потоками данных

cat access.log | textql -dlm=' ' -header -sql "SELECT COUNT(*) FROM tbl WHERE status = '404'"

Можно обрабатывать данные прямо из пайпов — идеально для анализа логов.

4. Дополнительные статистические функции

После простой установки расширения получаете:

  • Статистику: stdev, variance, median
  • Математические функции: power, sqrt, log
  • Строковые операции: trim, replace, reverse

5. Гибкость вывода

Результаты можно:

  • Вывести в консоль с красивым форматированием (-pretty)
  • Сохранить в файл (-output-file result.csv)
  • Изменить разделитель (-output-dlm=tab)

Как это работает под капотом

TextQL написан на Go и использует SQLite в памяти для обработки данных. Вот его ключевые особенности:

  1. Загружает данные в оперативную память (если не указано иное)
  2. Автоматически создает таблицы на основе имен файлов
  3. Поддерживает кавычки в полях — в отличие от стандартного импорта SQLite
  4. Работает без сохранения временных файлов

Когда TextQL особенно полезен

  1. Быстрый анализ логов: фильтрация, агрегация по времени, поиск аномалий
  2. Преобразование данных: объединение нескольких CSV, фильтрация строк
  3. Прототипирование: проверка идей перед написанием полноценного скрипта
  4. Автоматизация: встраивание в bash-скрипты для обработки данных

Установка за минуту

Для macOS:

brew install textql

Или через Docker:

docker run --rm -it -v $(pwd):/tmp textql -sql "SELECT * FROM data" data.csv

Вывод: стоит ли пробовать?

TextQL — это один из тех инструментов, который кажется простым, но экономит часы рутинной работы. Особенно рекомендую:

  • Разработчикам, работающим с логами
  • Аналитикам без доступа к полноценным BI-инструментам
  • Всем, кто устал от ручного редактирования CSV в Excel

Попробуйте на своем следующем CSV-файле — возможно, вы удивитесь, насколько это удобно.

Пример использования TextQL

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.