Spec-Zone.ru › DuckDB

Прямое чтение файлов

DuckDB позволяет напрямую читать файлы с помощью функций read_text и read_blob. Эти функции принимают имя файла, список имен файлов или шаблон glob и выводят содержимое каждого файла в виде VARCHAR или BLOB, соответственно, а также дополнительную метаданные, такую как размер файла и время последнего изменения.

read_text

Функция таблицы read_text считывает данные из выбранного источника(ов) в VARCHAR. Каждый файл приводит к одной строке с полем content, содержащим все содержимое соответствующего файла.

SELECT size, parse_path(filename), content
FROM read_text('test/sql/table_function/files/*.txt');
size parse_path(filename) content
12 [test, sql, table_function, files, one.txt] Привет Мир!
2 [test, sql, table_function, files, three.txt] 42
10 [test, sql, table_function, files, two.txt] Foo Bar\nFöö Bär

Содержимое файла сначала проверяется на валидность UTF-8. Если read_text пытается прочитать файл с некорректной кодировкой UTF-8, выбрасывается ошибка, предлагающая использовать read_blob вместо этого.

read_blob

Функция таблицы read_blob считывает данные из выбранного источника(ов) в BLOB:

SELECT size, content, filename
FROM read_blob('test/sql/table_function/files/*');
size content filename
178 PK\x03\x04\x0A\x00\x00\x00\x00\x00\xACi=X\x14t\xCE\xC7\x0A… test/sql/table_function/files/four.blob
12 Hello World! test/sql/table_function/files/one.txt
2 42 test/sql/table_function/files/three.txt
10 F\xC3\xB6\xC3\xB6 B\xC3\xA4r test/sql/table_function/files/two.txt

Схема

Схемы таблиц, возвращаемых функциями read_text и read_blob идентичны:

DESCRIBE FROM read_text('README.md');
column_name column_type null key default extra
filename VARCHAR YES NULL NULL NULL
content VARCHAR YES NULL NULL NULL
size BIGINT YES NULL NULL NULL
last_modified TIMESTAMP YES NULL NULL NULL

Обработка отсутствующих метаданных

В случаях, когда подлежащая файловая система не может предоставить некоторые из этих данных (например, потому что HTTPFS не всегда может вернуть действительную метку времени), ячейка устанавливается в NULL вместо этого.

Поддержка проецирования вниз

Функции таблицы также используют проецирование вниз, чтобы избежать ненужного вычисления свойств. Таким образом, вы можете, например, использовать это для поиска папки, полной больших файлов, чтобы получить размер файла в столбце size, при условии, что вы опустите столбец content, данные не будут считываться в DuckDB.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/guides/file_formats/read_file.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API