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?
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: