Виртуальная таблица 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. Для приложения эквивалентным API на языке C является sqlite3_load_extension(). Обратите внимание, что расширение имени файла (например, ".dll" или ".so" или ".dylib") опущено из имени файла расширения. Опускание расширения имени файла необязательно, но это способствует кроссплатформенности скрипта. SQLite автоматически добавит соответствующее расширение.
Вторая строка выше создаёт виртуальную таблицу с именем "t1", которая считывает содержимое файла, указанного в аргументе. Количество и имена столбцов определяются автоматически путём чтения первой строки содержимого. Другие параметры виртуальной таблицы CSV позволяют извлекать данные CSV из строки вместо отдельного файла и предоставляют программисту больший контроль над количеством и именами столбцов. Эти параметры описаны ниже. Виртуальная таблица CSV обычно создаётся как временная таблица, чтобы она существовала только для текущего подключения к базе данных и не становилась постоянной частью схемы базы данных. Обратите внимание, что команды «CREATE TEMP VIRTUAL TABLE» в SQLite нет. Вместо этого, добавьте префикс схемы «temp.» к имени виртуальной таблицы.
Третья строка примера демонстрирует использование виртуальной таблицы для чтения всего содержимого файла CSV. Это, пожалуй, самое простое возможное использование виртуальной таблицы. Виртуальная таблица CSV может быть использована везде, где может быть использована обычная виртуальная таблица. Можно использовать виртуальную таблицу CSV внутри подзапросов, или общей табличной выражений, или добавить условия WHERE, GROUP BY, HAVING, ORDER BY и LIMIT по мере необходимости.
2. Аргументы
Приведённый выше пример показал один аргумент filename='thefile.csv' для виртуальной таблицы 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» и так далее.
Эта страница была последняя изменена 08.01.2022 05:02:57 UTC
SQLite is in the Public Domain.
https://sqlite.org/csv.html