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
Una tabla que permite leer o escribir datos en un archivo.Ejemplos de escritura en un archivo
Escribir en un archivo TSV
test.tsv:
Escritura particionada en varios archivos TSV
Si especifica una expresiónPARTITION 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
Primero, estableceuser_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
Las rutas pueden usar globs. Los archivos deben coincidir con el patrón completo de la ruta, no solo con el sufijo o el prefijo. Hay una excepción: si la ruta hace referencia a un directorio existente y no usa globs, se añadirá implícitamente un* 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
Ejemplo Supongamos que hay estos archivos con las siguientes rutas relativas: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
Cuando la configuraciónuse_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