RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
Виртуальная таблица CSV

1. Обзор

Виртуальная таблица CSV читает отформатированные по RFC 4180 разделенные запятыми значения и возвращает содержание, как будто это были строки и колонки таблицы SQL.

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

Виртуальная таблица CSV не встроена в объединение SQLite. Это доступно как отдельный исходный файл, который может быть собран в загружаемое расширение. Типичное использование виртуальной таблицы CSV из оболочки командной строки:

.load ./csv
CREATE VIRTUAL TABLE temp.t1 USING csv(filename='thefile.csv');
SELECT * FROM t1;

Первая строка скрипта выше заставляет оболочку командной строки читать и активировать загружаемое расширение во время выполнения для CSV. Для применения эквивалентный C API это sqlite3_load_extension(). Заметьте, что расширение файла (например: ".dll", ".so" или ".dylib") пропущено. Исключение расширения файла не требуется, но это помогает в создании кросс-платформенного скрипта. SQLite автоматически допишет соответствующее расширение.

Вторая строка составляет виртуальную таблицу, названную "t1", которая читает содержание файла, названного в аргументе. Число и названия колонок определяются автоматически, читая первую строку содержания. Другие опции CSV обеспечивают способность взять содержание CSV от последовательности, а не отдельного файла, и дать программисту больше контроля над числом и названиями колонок. Варианты детализированы ниже. Виртуальная таблица CSV обычно составляется как таблица TEMP так, чтобы она существовала только для текущего соединения с базой данных и не становилась постоянной частью схемы базы данных. Обратите внимание на то, что нет никакой команды "CREATE TEMP VIRTUAL TABLE" в SQLite. Вместо этого добавьте префикс схемы "temp." к названию виртуальной таблицы.

Третья строка примера показывает используемую виртуальную таблицу, чтобы прочитать все содержание файла CSV. Это, возможно, самое простое возможное применение виртуальной таблицы. Виртуальная таблица CSV может использоваться везде, где может использоваться обычная виртуальная таблица. Можно использовать виртуальную таблицу CSV в подзапросах, общих табличных выражениях или добавить WHERE, GROUP BY, HAVING, ORDER BY и LIMIT.

2. Параметры

Пример выше показал единственный параметр виртуальной таблицы CSV: filename='thefile.csv'. Но другие аргументы также возможны.

  • filename=FILENAME

    filename= определяет внешний файл, из которого прочитано содержание CSV. У каждой таблицы CSV должен быть параметр filename= или data=, но не оба вместе.

  • data=TEXT

    Параметр data= определяет, что TEXT это буквальное содержание файла CSV.

  • schema=SCHEMA

    schema= указывает CREATE TABLE, который CSV передает sqlite3_declare_vtab() , чтобы определить названия колонок в виртуальной таблице.

  • columns=N

    columns=N определяет количество колонок в файле CSV. Если входные данные содержат больше колонок, чем это, то избыточные колонки проигнорированы. Если входные данные содержат меньше колонок, то дополнительные столбцы заполнены NULL. Если параметр columns=N опущен, первая строка файла CSV прочитана, чтобы определить количество колонок.

  • header=BOOLEAN
    он же header

    Если header = true, тогда первую строку файла CSV будут рассматривать как заголовок, а не как данные. Вторая строка CSV становится первой строкой содержания. Если schema= опущен, то первая строка CSV определяет названия колонок.

3. Имена столбцов

Имена столбцов виртуальной таблицы определяются, прежде всего, параметром schema=. Если schema= опущен, но header = true, значения, найденные в первой строке файла CSV, становятся именами столбцов. Если schema= опущен и header = false, то колонки называют "c0", "c1", "c2" и т.д.