-1
votes

La requête COPY INTO sur Snowflake renvoie une erreur TABLE n'existe pas

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


1 commentaires

Que renvoie SELECT * FROM random_table_name


6 Réponses :


0
votes

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.


2 commentaires

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



0
votes

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' 


0 commentaires

0
votes

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)


0 commentaires

0
votes

La table doit exister. Vous devriez vérifier la documentation de COPY INTO. Les autres domaines à considérer sont

  • avez-vous le bon contexte défini pour la base de données et le schéma
  • l'utilisateur / rôle a-t-il accès à la table ou à l'objet.

Il semble que vous n'ayez pas encore défini la table. Vous devriez

  • s'assurer que la table est créée
  • assurez-vous que toutes les colonnes du CSV existent en tant que colonnes dans le tableau
  • assurez-vous que l'ordre des colonnes est le même que dans le CSV
  • Je vérifierais aussi les types de données.

0 commentaires

0
votes

"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


0 commentaires

0
votes

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.


0 commentaires