Descripción
En el formato TabSeparated, los datos se escriben por fila. Cada fila contiene valores separados por tabulaciones. Cada valor va seguido de una tabulación, excepto el último valor de la fila, que va seguido de un salto de línea. En todo momento se asumen estrictamente saltos de línea de Unix. La última fila también debe terminar con un salto de línea. Los valores se escriben en formato de texto, sin comillas y con los caracteres especiales escapados. Este formato también está disponible con el nombreTSV.
El formato TabSeparated resulta práctico para procesar datos con programas y scripts personalizados. Se usa de forma predeterminada en la interfaz HTTP y en el modo por lotes del cliente de línea de comandos. Este formato también permite transferir datos entre distintos SGBD. Por ejemplo, puede obtener un volcado de MySQL y cargarlo en ClickHouse, o viceversa.
El formato TabSeparated admite la salida de valores totales (cuando se usa WITH TOTALS) y valores extremos (cuando ‘extremes’ se establece en 1). En estos casos, los valores totales y los extremos se muestran después de los datos principales. El resultado principal, los valores totales y los extremos se separan entre sí mediante una línea vacía. Ejemplo:
Formato de datos
Los números enteros se escriben en formato decimal. Los números pueden incluir un carácter ”+” adicional al principio (se ignora durante el análisis y no se conserva al formatear), y los ceros iniciales se ignoran durante el análisis (007 se lee como 7). Los números no negativos no pueden incluir el signo menos. Al leer, se permite interpretar una cadena vacía como cero o, en el caso de los tipos con signo, una cadena compuesta únicamente por un signo menos como cero. Los números que no caben en el tipo de dato correspondiente pueden interpretarse como otro número, sin mostrar ningún mensaje de error.
Los números de coma flotante se escriben en formato decimal. El punto se utiliza como separador decimal. Se admiten notaciones exponenciales, así como ‘inf’, ‘+inf’, ‘-inf’ y ‘nan’. Un valor de coma flotante puede empezar o terminar con un punto decimal.
Durante el formateo, los números de coma flotante pueden perder precisión.
Durante el análisis, no es estrictamente necesario leer el número representable por la máquina más cercano.
Las fechas se escriben en formato YYYY-MM-DD y se analizan con ese mismo formato, pero admitiendo cualquier carácter como separador.
Las fechas con hora se escriben en el formato YYYY-MM-DD hh:mm:ss y se analizan con ese mismo formato, pero admitiendo cualquier carácter como separador.
Todo esto ocurre en la zona horaria del sistema en el momento en que se inicia el cliente o el servidor (según cuál de ellos formatee los datos). En las fechas con hora, el horario de verano no está especificado. Por tanto, si un volcado contiene horas durante el horario de verano, el volcado no se corresponde de forma inequívoca con los datos, y el análisis elegirá una de las dos horas.
Durante una operación de lectura, las fechas incorrectas y las fechas con hora pueden interpretarse con desbordamiento natural o como fechas y horas nulas, sin mostrar ningún mensaje de error.
Como excepción, también se admite el análisis de fechas con hora en formato Unix timestamp, si consta de exactamente 10 dígitos decimales. El resultado no depende de la zona horaria. Los formatos YYYY-MM-DD hh:mm:ss y NNNNNNNNNN se distinguen automáticamente.
Las cadenas se generan con caracteres especiales escapados mediante backslash. Para la salida se usan las siguientes secuencias de escape: \b, \f, \r, \n, \t, \0, \', \\. El análisis también admite las secuencias \a, \v y \xHH (secuencias de escape hexadecimales), así como cualquier secuencia \c, donde c es cualquier carácter (estas secuencias se convierten en c). Por tanto, la lectura de datos admite formatos en los que un salto de línea puede escribirse como \n, como \ o como un salto de línea. Por ejemplo, la cadena Hello world con un salto de línea entre las palabras en lugar de un espacio puede analizarse en cualquiera de las siguientes variantes:
[]. Los elementos numéricos del array se formatean normalmente. Los tipos Date y DateTime se escriben entre comillas simples. Las cadenas se escriben entre comillas simples con las mismas reglas de escape indicadas arriba.
NULL se formatea de acuerdo con la configuración format_tsv_null_representation (el valor predeterminado es \N).
En los datos de entrada, los valores ENUM pueden representarse como nombres o como id. Primero, intentamos hacer coincidir el valor de entrada con el nombre del ENUM. Si no lo logramos y el valor de entrada es un número, intentamos hacer coincidir ese número con el id del ENUM.
Si los datos de entrada contienen solo id de ENUM, se recomienda habilitar la configuración input_format_tsv_enum_as_number para optimizar el análisis de ENUM.
Cada elemento de las estructuras Nested se representa como un array.
Por ejemplo:
Ejemplo de uso
Inserción de datos
Utiliza el siguiente archivo TSV, llamadofootball.tsv:
Lectura de datos
Lea datos con el formatoTabSeparated: