Klarety

Cargar datos

Cargue archivos, carpetas y DataFrames en tablas de Nexus desde Python.

Para desarrolladores

La carga convierte un archivo en filas de una tabla de . Nexus lee el archivo, deduce columnas y tipos, limpia los valores y escribe una tabla . Puede ver primero el resultado, elegir cómo se agregan las filas y seguir la carga.

Antes de empezar

  • El Acceso de su clave permite escribir en el de destino.
  • El espacio de trabajo tiene y espacio para guardar los datos.
  • El archivo es de un tipo que Nexus lee, como CSV, TSV, Parquet, JSON, JSON Lines, Excel, GeoJSON, GeoPackage o shapefile.

Cargue un archivo en una tabla

Véalo antes

ingest_preview() lee una muestra e informa lo que encontró, sin escribir nada:

from klarety import Nexus

with Nexus.connect() as nexus:
    preview = nexus.ingest_preview("sales_2026.csv", into="sales")
    print(preview["source_format"], preview["rows_sampled"])
    for column in preview["columns"]:
        print(column)

Revise los nombres y tipos de columna. Si uno está mal, corrija el archivo primero.

Inicie la carga

run = nexus.ingest("sales_2026.csv", into="sales", key=["order_id"])
print(run.run_id, run.state)

Una ruta local se sube por partes, así que los archivos más grandes que la memoria no son problema. ingest() devuelve un IngestRun en cuanto se acepta la carga.

Sígala hasta el final

while run.state in ("accepted", "running"):
    time.sleep(5)
    run = nexus.ingest_status(run.run_id)
print("Finished:", run.state)

Una carga termina como succeeded, failed o cancelled.

Revise las filas

print(nexus.sql("SELECT COUNT(*) AS n FROM sales").rows)

El script de abajo reúne los cuatro pasos.

El script completo

load_sales.py
import sys
import time

from klarety import InsufficientCreditsError, Nexus, RefusedError, ServiceError

PATH, TABLE = "sales_2026.csv", "sales"

with Nexus.connect() as nexus:
    try:
        run = nexus.ingest(PATH, into=TABLE, key=["order_id"])
        while run.state in ("accepted", "running"):
            time.sleep(5)
            run = nexus.ingest_status(run.run_id)
    except FileNotFoundError:
        sys.exit(f"{PATH} is neither a file nor a uri")
    except InsufficientCreditsError:
        sys.exit("The workspace is out of credits")
    except RefusedError as refused:
        sys.exit(f"Load refused: {refused}")
    except ServiceError as failed:
        sys.exit(f"Load failed on our side, try again: {failed}")

    if run.state != "succeeded":
        sys.exit(f"Load ended as {run.state}")
    print(nexus.sql(f"SELECT COUNT(*) AS n FROM {TABLE}").rows[0]["n"], "rows")

Elija cómo se agregan las filas

mode decide qué pasa cuando la tabla ya tiene filas:

ModoQué hace
auto (por defecto)Una primera carga crea la tabla. Después, con key actualiza las filas cuya clave existe y agrega el resto; sin clave agrega solo las filas que aún no están.
appendAgrega todas las filas, aunque la misma fila ya esté.
upsertActualiza las filas cuya key existe y agrega el resto. Indique una key.
replaceReemplaza todas las filas de la tabla por las del archivo.

key nombra las columnas que identifican una fila, como ["order_id"]. Otros parámetros:

  • into: la tabla en la que se carga.
  • schema: el esquema de la tabla, default salvo que nombre otro.
  • force: vuelve a cargar un archivo ya cargado en esta tabla. Sin él, un archivo se carga una sola vez por tabla, así que repetir su script no hace daño.

Cargue desde otros lugares

# A file already in a folder in Object Storage: every file directly in it
run = nexus.folders.at("exports/daily").load(into="daily_exports", mode="append")

# Chosen files by their IDs
run = nexus.files.load(["file-id-1", "file-id-2"], into="daily_exports")

# A file in an Amazon S3 bucket you connected
result = nexus.connections.read(connection_id, "exports/2026-11.parquet", into="exports")

Para cargar cada archivo nuevo al llegar a una carpeta, use folder.watch(into="table"). Vea Archivos y carpetas y Conexiones.

Cargue un DataFrame de Spark

Si preparó datos en una sesión de Spark, cargue el DataFrame directamente:

run = nexus.ingest_frame(frame, table="customer_summary", key=["customer"])

Qué puede salir mal

ProblemaCausaSolución
FileNotFoundErrorLa ruta no es un archivo ni una uri.Revise la ruta.
RefusedErrorNo tiene acceso de escritura, o el archivo supera lo que su plan permite por carga. El mensaje dice cuál.Use una clave con acceso, o conecte el bucket donde está el archivo y léalo desde allí.
La carga termina en failedEl archivo no se pudo leer.Véalo antes, corríjalo y cárguelo de nuevo.
No se cargó nada nuevoEl mismo archivo ya se cargó en esta tabla.Pase force=True si quiere cargarlo de nuevo.

Próximos pasos

En esta página