> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación sobre el formato CSV

# CSV

## Descripción

Formato de valores separados por comas ([RFC](https://tools.ietf.org/html/rfc4180)).
Al formatear, las filas se encierran entre comillas dobles. Una comilla doble dentro de una cadena se genera como dos comillas dobles seguidas.
No hay otras reglas para el escape de caracteres.

* La fecha y la fecha-hora se encierran entre comillas dobles.
* Los números se generan sin comillas.
* Los valores se separan mediante un carácter delimitador, que es `,` de forma predeterminada. El carácter delimitador se define en el ajuste [format\_csv\_delimiter](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_delimiter).
* Las filas se separan usando el salto de línea de Unix (LF).
* Los arrays se serializan en CSV de la siguiente manera:
  * primero, el array se serializa como una cadena, igual que en el formato TabSeparated
  * La cadena resultante se genera en CSV entre comillas dobles.
* Las tuplas en formato CSV se serializan como columnas independientes (es decir, se pierde su anidamiento en la tupla).

```bash theme={null}
$ clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO test.csv FORMAT CSV" < data.csv
```

> [!NOTE]
>
> De forma predeterminada, el delimitador es `,`
> Consulta la configuración [format\_csv\_delimiter](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_delimiter) para obtener más información.

Al analizar, todos los valores pueden interpretarse con o sin comillas. Se admiten tanto comillas dobles como simples.

Las filas también pueden escribirse sin comillas. En ese caso, se analizan hasta el carácter delimitador o el salto de línea (CR o LF).
Sin embargo, contraviniendo el RFC, al analizar filas sin comillas, se ignoran los espacios y tabulaciones iniciales y finales.
El salto de línea admite los tipos Unix (LF), Windows (CR LF) y Mac OS Classic (CR LF).

`NULL` se formatea según la configuración [format\_csv\_null\_representation](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_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\_csv\_enum\_as\_number](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_enum_as_number) para optimizar el análisis de `ENUM`.

## Ejemplo de uso

## Configuración del formato

| Configuración | Descripción | Predeterminado | Notas |
| - | - | - | - |
| [format\_csv\_delimiter](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_delimiter) | el carácter que se considerará delimitador en los datos CSV. | `,` | |
| [format\_csv\_allow\_single\_quotes](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_allow_single_quotes) | permitir cadenas entre comillas simples. | `true` | |
| [format\_csv\_allow\_double\_quotes](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_allow_double_quotes) | permitir cadenas entre comillas dobles. | `true` | |
| [format\_csv\_null\_representation](https://clickhouse.com/docs/es/reference/settings/formats/format-csv.md#format_csv_null_representation) | representación personalizada de NULL en formato CSV. | `\N` | |
| [input\_format\_csv\_empty\_as\_default](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_empty_as_default) | tratar los campos vacíos de la entrada CSV como valores predeterminados. | `true` | Para expresiones predeterminadas complejas, [input\_format\_defaults\_for\_omitted\_fields](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_defaults_for_omitted_fields) también debe estar habilitado. |
| [input\_format\_csv\_missing\_nullable\_as\_empty\_string](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_missing_nullable_as_empty_string) | leer un valor ausente de `Nullable(String)` como una cadena vacía en lugar de NULL, independientemente de `input_format_csv_empty_as_default`. | `false` | |
| [input\_format\_csv\_enum\_as\_number](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_enum_as_number) | tratar los valores enum insertados en formatos CSV como índices de enum. | `false` | |
| [input\_format\_csv\_use\_best\_effort\_in\_schema\_inference](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_use_best_effort_in_schema_inference) | usar algunos ajustes y heurísticas para inferir el esquema en formato CSV. Si se deshabilita, todos los campos se inferirán como Strings. | `true` | |
| [input\_format\_csv\_arrays\_as\_nested\_csv](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_arrays_as_nested_csv) | al leer Array desde CSV, esperar que sus elementos se hayan serializado como CSV anidado y luego se hayan almacenado en una cadena. | `false` | |
| [output\_format\_csv\_crlf\_end\_of\_line](https://clickhouse.com/docs/es/reference/settings/formats/output-format.md#output_format_csv_crlf_end_of_line) | si se establece en true, el final de línea del formato de salida CSV será `\r\n` en lugar de `\n`. | `false` | |
| [input\_format\_csv\_skip\_first\_lines](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_skip_first_lines) | omitir el número especificado de líneas al principio de los datos. | `0` | |
| [input\_format\_csv\_detect\_header](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_detect_header) | detectar automáticamente un encabezado con nombres y tipos en formato CSV. | `true` | |
| [input\_format\_csv\_skip\_trailing\_empty\_lines](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_skip_trailing_empty_lines) | omitir las líneas vacías finales al final de los datos. | `false` | |
| [input\_format\_csv\_trim\_whitespaces](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_trim_whitespaces) | eliminar espacios y tabulaciones en cadenas CSV no entrecomilladas. | `true` | |
| [input\_format\_csv\_allow\_whitespace\_or\_tab\_as\_delimiter](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_allow_whitespace_or_tab_as_delimiter) | permitir usar espacios en blanco o tabulaciones como delimitador de campo en cadenas CSV. | `false` | |
| [input\_format\_csv\_allow\_variable\_number\_of\_columns](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_allow_variable_number_of_columns) | permitir un número variable de columnas en formato CSV, ignorar las columnas adicionales y usar valores predeterminados para las columnas ausentes. | `false` | |
| [input\_format\_csv\_use\_default\_on\_bad\_values](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_use_default_on_bad_values) | permitir establecer el valor predeterminado de la columna cuando falle la deserialización de un campo CSV debido a un valor no válido. | `false` | |
| [input\_format\_csv\_try\_infer\_numbers\_from\_strings](https://clickhouse.com/docs/es/reference/settings/formats/input-format.md#input_format_csv_try_infer_numbers_from_strings) | intentar inferir números a partir de string fields durante la inferencia de esquema. | `false` | |
