# Agregar datos
Traiga datos a Nexus de tres formas: suba archivos a una carpeta, convierta una hoja de cálculo en tabla o use un conector para una fuente como PostgreSQL o Google Sheets. Esta página cubre las dos primeras y cómo agregar filas después.
## Antes de empezar [#antes-de-empezar]
- Acceso para agregar archivos a la carpeta. Propietarios y administradores pueden agregar en cualquiera.
- Para agregar filas a una tabla, acceso para cambiar sus datos. Un miembro limitado lo necesita de un administrador. Vea [Acceso a datos](/docs/es/data/data-access).
- Cada archivo tiene un límite de tamaño según su plan, que muestra el diálogo de subida.
## Archivos que pueden convertirse en tabla [#archivos-que-pueden-convertirse-en-tabla]
Cualquier archivo se puede subir y guardar. Estos también pueden convertirse en tabla sin código:
- CSV, TSV y texto plano con separador (`.csv`, `.tsv`, `.txt`)
- JSON y JSON Lines (`.json`, `.jsonl`, `.ndjson`), y XML
- Libros de Excel (`.xlsx`)
- Parquet, ORC y Avro
- Datos de mapas: GeoJSON, GeoParquet, GeoPackage, Shapefile (como `.zip`), KML, KMZ, GPX y FlatGeobuf
## Subir archivos [#subir-archivos]
### Abra Agregar datos [#abra-agregar-datos]
Vaya a y busque **Agregar datos**.
### Suelte sus archivos [#suelte-sus-archivos]
Suelte los archivos en el recuadro o haga clic para elegirlos.
### Elija una carpeta [#elija-una-carpeta]
En **Agregar a**, elija una de sus carpetas, vea todas las carpetas o cree una **Nueva carpeta**.
### Suba [#suba]
Seleccione **Subir**. Cuando el diálogo diga **Subida completada**, seleccione **Abrir carpeta** para ver los archivos.
Un archivo con el mismo nombre se guarda como versión nueva; la anterior se conserva. Si una subida se detiene a medias, suba el mismo archivo a la misma carpeta otra vez: solo se envía lo que falta.
```python title="upload_files.py"
from klarety import Nexus
with Nexus.connect() as nx:
folder = nx.folders.at("reports/2026")
saved = folder.upload("q3-revenue.xlsx")
print(saved["version"])
```
`folders.at()` recorre una ruta como `reports/2026` desde las carpetas que usted alcanza. `upload()` espera hasta que la versión queda registrada; pase `wait=False` para volver en cuanto el archivo se acepta, útil para muchas subidas seguidas. El equivalente en la línea de comandos es `klarety put q3-revenue.xlsx reports/2026`.
## Convertir una hoja de cálculo en tabla [#convertir-una-hoja-de-cálculo-en-tabla]
### Inicie la importación [#inicie-la-importación]
En , seleccione **Convertir una hoja de cálculo en tabla**. También puede abrir **Nexus Lakehouse** y seleccionar **Importar una tabla**.
### Elija el archivo y dónde guardarlo [#elija-el-archivo-y-dónde-guardarlo]
Elija el archivo. En **Guardar el archivo en**, elija una carpeta; el archivo queda allí para recargarlo o descargarlo.
### Revise las columnas [#revise-las-columnas]
Revise los nombres y tipos en **Columnas encontradas**.
### Nombre la tabla [#nombre-la-tabla]
Escriba el **Nombre de la tabla**. Si el nombre ya existe, verá **Esta tabla ya existe** y elegirá **Agregar filas** o **Reemplazar filas**.
### Importe [#importe]
Seleccione **Importar**. Al terminar, seleccione **Abrir tabla**.
Un archivo que ya está en Almacenamiento de objetos se convierte en tabla igual: abra su menú y elija **Crear una tabla**.
Haga primero una vista previa, para detectar una columna mal interpretada antes de escribir filas. Luego cargue:
```python title="import_table.py"
import time
from klarety import Nexus
with Nexus.connect() as nx:
preview = nx.ingest_preview("customers.csv", into="customers")
print(preview)
run = nx.ingest("customers.csv", into="customers", schema="default")
while run.state in ("accepted", "running"):
time.sleep(2)
run = nx.ingest_status(run.run_id)
print(run.state)
```
Una carga termina como `succeeded`, `failed` o `cancelled`. `ingest()` acepta una ruta local, que sube primero, o una URI. Desde la línea de comandos: `klarety ingest customers.csv --into customers`.
## Agregar filas a una tabla que ya existe [#agregar-filas-a-una-tabla-que-ya-existe]
Cuando la tabla ya existe, elija cómo llegan las filas nuevas:
| Opción en la app | `mode` en código | Qué pasa |
| --- | --- | --- |
| **Agregar filas** | `auto` | Se agregan filas nuevas. Las filas que ya están en la tabla no se agregan dos veces. |
| **Actualizar filas por clave** | `upsert` | Usted elige las columnas que identifican una fila. Una fila con la misma clave se reemplaza; las demás se agregan. |
| **Reemplazar todas las filas** | `replace` | Después, la tabla contiene solo este archivo. El historial conserva las filas anteriores. |
La tabla conserva solo el archivo nuevo. Las filas anteriores quedan en el [historial](/docs/es/data/undo-and-restore), así que puede volver atrás si el archivo estaba mal.
**Agregar filas** sirve para registros nuevos, como los pedidos de este mes. **Actualizar filas por clave** sirve para registros corregidos, como una exportación nueva de clientes con clave `customer_id`. **Reemplazar todas las filas** sirve cuando el archivo es la versión completa y actual.
### Abra la tabla [#abra-la-tabla]
En **Nexus Lakehouse**, abra la tabla y seleccione **Agregar datos desde un archivo**.
### Elija el archivo [#elija-el-archivo]
Elija el archivo y la carpeta donde guardarlo.
### Elija cómo se cargan las filas [#elija-cómo-se-cargan-las-filas]
En **Cómo se cargan las filas**, elija **Agregar filas**, **Actualizar filas por clave** o **Reemplazar todas las filas**. Para **Actualizar filas por clave**, marque las **Columnas que identifican una fila**.
### Cargue [#cargue]
Seleccione **Cargar**. Puede cerrar el diálogo; la carga sigue, y la pestaña **Historial** muestra la nueva versión al terminar.
```python title="update_by_key.py"
from klarety import Nexus
with Nexus.connect() as nx:
run = nx.ingest(
"customers-latest.csv",
into="customers",
mode="upsert",
key=["customer_id"],
)
print(run.run_id, run.state)
```
Una clave tiene como máximo 8 columnas. Un archivo se carga en una tabla una sola vez: cargarlo de nuevo no hace nada, salvo que pase `force=True`.
Para cargar filas desde una fuente conectada, indique la conexión y una consulta: `nx.ingest(connection="CONNECTION_ID", query="SELECT * FROM orders", into="orders")`.
## Filas que no cumplen una verificación [#filas-que-no-cumplen-una-verificación]
Las filas que no cumplen una verificación de la tabla se apartan; el resto se carga normalmente. El panel de verificaciones muestra cuántas filas escribió y apartó cada carga. Vea [Trabajar con tablas](/docs/es/data/tables#agregar-verificaciones-de-datos).
## Qué puede salir mal [#qué-puede-salir-mal]
Divida el archivo, o guárdelo como archivo y cárguelo por partes desde código.
Abra la pestaña **Columnas** de la tabla para ver qué se leyó. Desde código, ejecute primero `nx.ingest_preview()`: muestra qué pasaría antes de escribir filas.
El mensaje indica el motivo, a menudo una columna clave que falta en el archivo con **Actualizar filas por clave**.
**Agregar filas** nunca agrega una fila dos veces, y el mismo archivo no se carga dos veces en la misma tabla. Si quería cargarlo de nuevo, elija **Reemplazar todas las filas**, o pase `force=True` en código.
## Siguientes pasos [#siguientes-pasos]
- [Trabajar con tablas](/docs/es/data/tables): explore, edite y verifique la tabla que creó.
- [Almacenamiento de objetos](/docs/es/data/object-storage): importe archivos nuevos de una carpeta automáticamente.
- [Conectores](/docs/es/connectors): traiga datos de PostgreSQL, Google Sheets, Amazon S3 y más.
- [Consultar con SQL](/docs/es/data/sql-editor): haga preguntas a su nueva tabla.