J'essaie de charger des données à partir du stockage blob Azure.
Les données ont déjà été mises en scène.
Mais, le problème est quand j'essaye de courir
raise error_class( snowflake.connector.errors.ProgrammingError: 001757 (42601): SQL compilation error: Table 'random_table_name' does not exist
Voici l'erreur que je rencontre:
copy into random_table_name from @stage_name_i_created file_format = (type='csv') pattern ='*.csv'
Fondamentalement, il dit que la table n'existe pas, ce qui n'est pas le cas, mais la syntaxe sur le site Web est la même que la mienne.
La requête COPY INTO sur Snowflake renvoie une erreur TABLE n'existe pas
6 Réponses :
La table doit exister avant d'exécuter une commande COPY INTO
. Dans votre message, vous dites que la table n'existe pas ... c'est donc votre problème.
Comment créer une table? (Selon la syntaxe de flocon de neige, il n'est pas possible de créer des tables vides)
Bien sûr vous pouvez. docs.snowflake.com/en/sql-reference/sql/create-table.html
Si votre table existe, essayez de forcer le chemin de la table comme ceci:
use database <database_name>; use schema <schema_name>; copy into database.schema.random_table_name from @stage_name_i_created file_format = (type='csv') pattern ='*.csv';
ou par étapes comme celle-ci:
copy into <database>.<schema>.<random_table_name> from @stage_name_i_created file_format = (type='csv') pattern ='*.csv'
rbachkaniwala, qu'entendez-vous par «Comment créer une table? (selon la syntaxe du flocon de neige, il n'est pas possible de créer des tables vides)».
Vous pouvez simplement faire ci-dessous pour créer un tableau
CREATE TABLE random_table_name (FIELD1 VARCHAR, FIELD2 VARCHAR)
La table doit exister. Vous devriez vérifier la documentation de COPY INTO. Les autres domaines à considérer sont
Il semble que vous n'ayez pas encore défini la table. Vous devriez
"COPY INTO"
n'est pas une commande de requête, il s'agit de l'exécution réelle du transfert de données de la source à la destination, qui doivent toutes deux exister comme d'autres commentées ici, mais si vous souhaitez simplement interroger sans charger les fichiers, exécutez le SQL suivant:
//Display list of files in the stage to verify stage LIST @stage_name_i_created; //Create a file format CREATE OR REPLACE FILE FORMAT RANDOM_FILE_CSV type = csv COMPRESSION = 'GZIP' FIELD_DELIMITER = ',' RECORD_DELIMITER = '\n' SKIP_HEADER = 0 FIELD_OPTIONALLY_ENCLOSED_BY = '\042' TRIM_SPACE = FALSE ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE ESCAPE = 'NONE' ESCAPE_UNENCLOSED_FIELD = 'NONE' DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'AUTO' NULL_IF = ('\\N'); //Now select the data in the files Select $1 as first_col,$2 as second_col //can add as necessary number of columns ...etc from @stage_name_i_created (FILE_FORMAT => RANDOM_FILE_CSV)
Plus d'informations peuvent être trouvées dans le lien de documentation ici https://docs.snowflake.com/en/user-guide/querying-stage.html
Dans mon cas, le nom de la table est sensible à la casse. Snowflake semble tout convertir en majuscules. J'ai changé les noms de base de données / schéma / table en majuscules et cela a commencé à fonctionner.
Que renvoie SELECT * FROM random_table_name