es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede COPIAR en una tabla inexistente cuando la tabla existe.

Entonces, tengo una tabla nba_schedule que se crea a continuación. Cuando intento copiar datos desde un archivo CSV de S3 para insertar en la tabla usando COPY, recibo este error InternalError_: No se puede copiar en una tabla inexistente newsletter_schedule.

Creo que esto se debe a que todo esto está sucediendo en la misma transacción, que es lo que se espera que haga aquí. Además, las variables de redshift se encuentran en un archivo env, no estoy compartiendo el código que carga eso.

redshift_table = 'nba_schedule'


# Conectar a redshift
conn_string = "dbname={} port={} user={} password={} host={}".format(
    redshift_dbname, redshift_port, redshift_user, redshift_password, redshift_host)
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()


logging.info("Creando la tabla newsletter_schedule en Redshift")

sql = f"""DROP TABLE IF EXISTS {esquema + "." + redshift_table}"""
cursor.execute(sql)
sql = f"""CREATE TABLE IF NOT EXISTS {esquema + "." + redshift_table} (
             Fecha DATE,
             Nombre_Jugador VARCHAR(255),
             Apodo_Jugador VARCHAR(13),
             Numero_Jugador VARCHAR(13),
             Puntos VARCHAR(255),
             Rebotes VARCHAR(255),
             Asistencias VARCHAR(255),
             Bloqueos VARCHAR(1),
             3PM VARCHAR(1),
             3PA VARCHAR(1),
             FGM VARCHAR(50),
             FGA VARCHAR(255),
             Porcentaje_Tres VARCHAR(50),
             Porcentaje_Tiro VARCHAR(50)
             )
        """
cursor.execute(sql)
sql =f"""
        COPY newsletter_schedule
        DESDE 's3://random_sample_data/nba_redshift/{s3_file}'
        CREDENTIALS 'aws_iam_role=arn:aws:iam::4254514352:role/SampleRole'
        DELIMITADOR ','
        IGNORAR 1
        EMPTYASNULL
        CUOTE '"'
        CSV
        REGION 'us-east-1';

    """
cursor.execute(sql)

conn.commit()

¿Alguna idea?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el error se debe a que el comando COPY está haciendo referencia a una tabla llamada “newsletter_schedule” en lugar de “nba_schedule”. Esto podría deberse a un simple error de escritura o a una asignación incorrecta de variables. Aquí tienes algunas sugerencias:

    1. Verifica nuevamente el nombre de la tabla y asegúrate de que coincida con el utilizado en la sentencia SQL.
    2. Revisa el valor de la variable “redshift_table” para asegurarte de que esté configurada como “nba_schedule”.
    3. Si el problema persiste, intenta especificar explícitamente el nombre del esquema en la sentencia COPY, de la siguiente manera: COPY nombre_de_esquema.nba_schedule FROM …

Comments are closed.