SELECT desde archivos e INSERT en ellos, similar a la función de tabla s3. Use file() cuando trabaje con archivos locales y s3() cuando trabaje con buckets de almacenamiento de objetos como S3, GCS o MinIO.
La función file puede usarse en consultas SELECT e INSERT para leer archivos o escribir en ellos.
Sintaxis
SELECT, path también puede ser una expresión que devuelve un Array(String):
Argumentos
Valor devuelto
Ejemplos de escritura en un archivo
Escribir en un archivo TSV
test.tsv:
Escritura particionada en varios archivos TSV
PARTITION BY al insertar datos en una función de tabla de tipo file(), se crea un archivo independiente para cada partición. Dividir los datos en archivos separados ayuda a mejorar el rendimiento de las operaciones de lectura.
test_1.tsv, test_2.tsv y test_3.tsv.
Ejemplos para leer desde File
SELECT de un archivo CSV
user_files_path en la configuración del servidor y prepara el archivo test.csv:
test.csv en una tabla y selecciona sus dos primeras filas:
Insertar datos de un archivo en una tabla
table.csv, ubicado en archive1.zip o archive2.zip:
Globs en la ruta
* a la ruta para que
se seleccionen todos los archivos del directorio.
*— Representa una cantidad arbitraria de caracteres, excepto/, incluida la cadena vacía.?— Representa un único carácter cualquiera.{some_string,another_string,yet_another_one}— Sustituye cualquiera de las cadenas'some_string', 'another_string', 'yet_another_one'. Las cadenas pueden contener el símbolo/.{N..M}— Representa cualquier número>= Ny<= M.**- Representa todos los archivos dentro de una carpeta de forma recursiva.
{} son similares a las funciones de tabla remote y hdfs.
Ejemplos
some_dir/some_file_1some_dir/some_file_2some_dir/some_file_3another_dir/some_file_1another_dir/some_file_2another_dir/some_file_3
some_dir usando el * implícito:
Si tu lista de archivos contiene rangos numéricos con ceros a la izquierda, usa la construcción con llaves para cada dígito por separado o
?.file000, file001, … , file999:
big_dir/ de forma recursiva:
file002 dentro de cualquier carpeta del directorio big_dir/, de forma recursiva:
Columnas virtuales
_path— Ruta del archivo. Tipo:LowCardinality(String)._file— Nombre del archivo. Tipo:LowCardinality(String)._size— Tamaño del archivo en bytes. Tipo:Nullable(UInt64). Si se desconoce el tamaño del archivo, el valor esNULL._time— Hora de la última modificación del archivo. Tipo:Nullable(DateTime). Si se desconoce la hora, el valor esNULL.
Configuración use_hive_partitioning
use_hive_partitioning se establece en 1, ClickHouse detecta el particionado con estilo Hive en la ruta (/name=value/) y permite usar las columnas de partición como columnas virtuales en la consulta. Estas columnas virtuales tendrán los mismos nombres que en la ruta particionada.
Ejemplo
Usar una columna virtual creada con particionado con estilo Hive