29

Кто-нибудь знает простой инструмент, который откроет CSV-файл и позволит вам выполнять базовые SQLesque-запросы к нему? Как своего рода графический инструмент, который прост в использовании.

Я знаю, что мог бы написать небольшой скрипт для импорта CSV в базу данных SQLite, но, поскольку я представляю, что кто-то еще думал об этом до меня, я просто хотел узнать, существует ли он. Этот вопрос вызывает у меня разочарование в связи с ограниченными возможностями фильтрации в Excel.

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

Бесплатно или OSS предпочтительнее, но я открыт для любых предложений.

РЕДАКТИРОВАТЬ:

Я действительно предпочел бы несколько ясных руководств о том, как сделать ниже, а не просто "сделать вашу запись записью ODBC" или "писать программы с использованием файлов ODBC", или больше идей о приложениях для использования. Примечание: я не могу использовать MS Access.

Еще одно редактирование:

Я все еще открыт для решений, использующих SQLite. Моя платформа - это полу-древний ноутбук Win2k с P4 на нем. Он довольно медленный, поэтому решение с ограниченным использованием ресурсов является идеальным и, вероятно, получит победу.

16 ответов16

33

Я думаю, что база данных OpenOffice.org может делать то, что вы хотите. Это работает так.

  1. Запустите «Открыть базу данных Office.org», в ней отображается « Мастер баз данных ».

  2. Выберите « Подключиться к существующей базе данных: Текст »

  3. Укажите путь к текстовым файлам, а также такие детали, как символ-разделитель и т.д.

  4. Создание и выполнение запросов

Если вы когда-либо работали с Microsoft Access, вы найдете знакомый графический интерфейс.


Если вы можете обойтись без графического интерфейса, всегда есть традиционные команды UNIX. Я часто использую их для выполнения простых запросов к (маленьким) файлам CSV. Вот как это работает:

clause      operation   command
-------------------------------
from             join     `join`
where     restriction     `grep`
order by           --     `sort`
group by  restriction      `awk`
having    restriction     `grep`
select     projection      `cut`
distinct  restriction     `uniq`
limit     restriction     `head`
offset    restriction     `tail`
13

Вы можете использовать ODBC для запроса текстовых файлов:

Доступ к текстовым файлам с использованием ODBC Data Provider

Обратите внимание, что вам не нужен MS Access для этого, учебник по приведенной выше ссылке просто использует MS Access для создания текстового файла, но, поскольку у вас уже есть текстовый файл, прокрутите вниз наполовину и запустите учебник, где вы видите заголовок Доступ к текстовому файлу.

Обновление: я создал DSN для файла .csv сам, чтобы иметь возможность создать это пошаговое руководство ... вот оно:

  • Убедитесь, что ваш файл .csv находится в своем собственном каталоге, и ничего больше.
  • Откройте "Администратор источника данных ODBC" (Пуск - Панель управления - Инструменты администрирования - Источники данных (ODBC)).
  • Перейдите на вкладку File DSN и нажмите «Добавить ...».
  • Выберите «Текстовый драйвер Microsoft (* .txt, * .csv)» из списка и нажмите «Далее>».
  • Дайте имя для вашего файла источника данных (например, "тест") и нажмите «Далее>».
  • Нажмите "Готово" (после этого появится диалоговое окно, в котором поля "Имя источника данных" и "Описание" действительно выделены серым цветом). Это нормально. Не волнуйтесь.
  • Снимите флажок "Использовать текущий каталог". Кнопка "Выбрать каталог" будет включена.
  • Нажмите кнопку "Выбрать каталог" и откройте папку, в которую вы поместили файл .csv на первом этапе.
  • Нажмите на кнопку «Опции >>».
  • Нажмите на кнопку «Определить формат ...».
  • В левом списке "Таблицы" выберите файл .csv и нажмите кнопку "Угадай". (Это проанализирует ваш CSV-файл и создаст соответствующее поле для каждого столбца в вашем CSV-файле.)
  • Просмотрите сгенерированные столбцы (F1, F2, ...) в правом списке, дайте им значимые имена и установите соответствующий тип данных (иногда угадывание не всегда верно).
  • После того, как все настроено правильно, нажмите "ОК" (2 раза).

На этом этапе у вас должен быть файл DSN, с помощью которого вы можете получить доступ к файлу .csv через ODBC. Если вы проверите свою папку, в которой находится файл .csv, вы увидите файл schema.ini, который содержит только что созданную вами конфигурацию. Если у вас есть несколько файлов .csv, каждый из них соответствует таблице, и у каждой таблицы будет блок [ filename.csv] в файле schema.ini, в котором определены различные столбцы ... Вы также можете создать / изменить этот файл schema.ini непосредственно в текстовом редакторе вместо использования графического интерфейса, описанного выше.

Что касается вашего дополнительного вопроса "как подключиться к этому провайдеру ODBC с помощью инструмента запросов":
У меня есть инструмент, который я написал сам давным-давно, который не подходит для публикации. Но быстрый поиск в Google дал odbc-view, бесплатный инструмент, который делает то, что вы хотите.
Я скачал и установил инструмент.
После запуска инструмента:

  • Нажмите «Источник данных ...».
  • Выберите источник данных файла, который вы создали ранее (например, "тест").
  • В области запросов введите «select * from [ filename.csv]».
  • Нажмите "Выполнить".

Вы должны увидеть содержимое вашего .csv файла в нижней панели.
Надеюсь это поможет... Дайте мне знать, как вы делаете, или если вам нужна дополнительная помощь.

12

Вы пробовали LogParser?

Анализатор журналов - это мощный универсальный инструмент, который обеспечивает универсальный доступ к запросам к текстовым данным, таким как файлы журналов, файлы XML и CSV, а также к ключевым источникам данных в операционной системе Windows®, таким как журнал событий, реестр, файловая система и Active Directory®. Вы сообщаете Log Parser, какая информация вам нужна и как вы хотите ее обрабатывать. Результаты вашего запроса могут быть отформатированы в текстовом формате или сохранены в более специализированных целях, таких как SQL, SYSLOG или диаграмма.

Большая часть программного обеспечения предназначена для выполнения ограниченного числа конкретных задач. Log Parser отличается ... количество способов его использования ограничено только потребностями и фантазией пользователя. Мир - это ваша база данных с Log Parser.

Учебное пособиееще одно) по использованию языка запросов, подобного SQL, с файлами CSV, которые я нашел с помощью Google.

Пример запроса:

logparser -i:CSV "SELECT TOP 10 Time, Count INTO c:\logparser\test\Chart.GIF 
FROM c:\logparser\test\log.csv ORDER by Time DESC" -charttype:bar3d
8

Мне нравится использовать R для быстрого доступа к CSV-файлам. Хотя язык не является непосредственно SQL, вы можете делать все эти вещи с помощью простых команд в R. R также предоставляет вам возможность создавать красивые графики и многое другое.

5

Вы всегда можете прочитать файл в Excel и использовать Excel в качестве источника данных через ODBC и выполнять запросы к нему.

3

Вы можете взглянуть на бесплатный инструмент q - Text as a Database , который позволяет выполнять SQL непосредственно в файлах csv, включая объединения, группирование и любые другие конструкции SQL. Также включает в себя автоматическое определение имен столбцов и типов столбцов.

Это инструмент командной строки, который соответствует способу работы Linux (например, Piping от stdin, если необходимо, специальные флаги для настройки поведения и т.д.).

За кулисами использует sqlite, поэтому очень легкий и простой в использовании.

Полное раскрытие - это мой собственный инструмент с открытым исходным кодом. Надеюсь, что вы найдете ее полезной

Харел Бен-Аттиа

3

Я нашел небольшое неграфическое приложение, которое делает это: csvsql.

Документация здесь.

3

Я обнаружил, что самый простой способ добиться этого - просто использовать встроенную функцию импорта CSV-кода SQLite:

  1. sqlite3 mydatabase.sqlite
  2. sqlite> .mode csv
  3. sqlite> .import mydata.csv <tablename>

Теперь у вас есть рабочая база данных, к которой вы можете обращаться по своему усмотрению. Я также обнаружил, что производительность выше была хорошей, я только что импортировал три миллиона строк за 10-15 секунд.

2

Я написал программу командной строки для выполнения произвольного SQL в файлах csv, включая многофайловые объединения, называемые gcsvsql. Вы можете прочитать об этом здесь:

http://bayesianconspiracy.blogspot.com/2010/03/gcsvsql.html

Для этого есть проект Google Code: http://code.google.com/p/gcsvsql/

Он написан на Java/Groovy и будет работать везде, где доступна Java.

Изменить: Активный проект перенесен на GitHub. https://github.com/jdurbin/durbinlib

2

Инструмент, который, как мне кажется, может облегчить это в будущем, - это Resolver One.

Это электронная таблица, которая генерирует код Python, который легко модифицируется. Для тех, кто является разработчиком, и иногда ему необходимо "уйти в отставку" для решения проблем в электронных таблицах, это кажется интуитивным способом решения проблем, связанных с электронными таблицами, на языке, с которым они знакомы.

И это дает мне повод использовать Python. Python делает меня счастливым.

2

Драйвер H2 JDBC предоставляет очень полезную функцию csvread, позволяющую вам выполнять следующие действия:

select * from csvread(test1.csv) test1 
inner join csvread(test2.csv2) test2
on test1.id = test2.foreignkey

Существуют различные способы использования этого драйвера без необходимости углубляться в написание кода для его использования.

Лично я предпочитаю Squirrel SQL Client, который предоставляет хороший графический интерфейс для выполнения запросов в. Чтобы использовать его, все, что вам нужно сделать, - это указать уже перечисленный путь класса H2 In-Memory Driver к драйверу H2, который вы скачали. После того, как вы настроили подходящий псевдоним с помощью драйвера, вы можете запустить любой произвольный SQL-запрос. Результаты отображаются в удобной таблице и во множестве других функций для импорта, экспорта и т.д.

Кроме того, вы можете использовать Groovy для написания быстрого скрипта для загрузки и использования драйвера по мере необходимости. Посмотрите этот пример блога, чтобы узнать как.

Похоже, кто-то расширил вышеупомянутый скрипт groovy и превратил его в хороший инструмент командной строки для запуска запросов, см. Gcsvsql. При этом вы можете запускать команды, подобные следующим:

gcsvsql "select * from people.csv where age > 40"
1

Вы можете попробовать Q инструмент. Он очень легкий, требует только Python 2.5 или новее.

1

Еще две опции для этой задачи: querycsv и fsql. Querycsv является Python и использует sqlite3. Fsql является Perl и использует DBD:: CSV.

0

Вы можете использовать WHS. Например, у меня есть 4 файла в каталоге 'C:\Users\user837\Desktop\t4':1.txt

id;sex_ref;sale
1;1;10
2;2;30
3;1;20

2.txt

sex_id;name
1;male
2;female

Schema.ini

[1.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,
[2.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,

и Hello.js

WScript.Echo("Hello World!");
var cn = new ActiveXObject("ADODB.Connection");
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Users\\user837\\Desktop\\t4\";Extended Properties=\"text;HDR=NO;FMT=Delimited\"");

var rs = cn.Execute("select * from 1.txt as t1 left join 2.txt as t2 on t1.sex_ref = t2.sex_id");

while (!rs.EOF) 
{
    WScript.Echo(           rs.Fields("id").Value
                  + "###" + rs.Fields("sex_ref").Value
                  + "###" + rs.Fields("name").Value
                );
    rs.moveNext();
}

Теперь просто дважды щелкните по Hello.js, и вы увидите sql reqult построчно. См. Документацию WHS для просмотра всех результатов запроса.

0

Существует плагин Notepad++ CsvQuery для запуска SQL-запросов к CSV-файлам, открытым в npp. https://github.com/jokedst/CsvQuery

0

Хотя и не бесплатная, лучшая программа, которую я нашел для этого, - это File Query. В отличие от других решений, которые основаны либо на командной строке, либо требуют импорта / настройки файла перед тем, как получить к нему доступ, File Query позволяет открывать файл (даже в ГБ, как в обычном текстовом редакторе, и автоматически анализирует макет для вас, и пусть вы делаете почти все свои запросы из простых диалогов.

Это немного дорого, но если вам нужно сделать что-то один раз, вы всегда можете просто использовать 30-дневную пробную версию бесплатно. У них также есть отличные руководства и даже видео, чтобы вы начали.

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