J'essaie de copier un fichier CSV.GZ dans un tableau que j'ai créé pour commencer à analyser les données d'emplacement pour une carte. Je rencontrais une erreur qui dit qu'il y a trop de caractères et je devrais ajouter une option on_error. Cependant, je ne suis pas sûr que cela aidera à charger les données, pouvez-vous jeter un coup d'œil?
Source de données: https://data.world/cityofchicago/array-of-things-locations p>
p>
CREATE OR REPLACE TABLE ARRAYLOC(name varchar, location_type varchar, category varchar, notes varchar, status1 varchar, latitude float, longitude varchar, location varchar);
COPY INTO ARRAYLOC
FROM @staged/array-of-things-locations-1.csv.gz;
CREATE or Replace FILE FORMAT r_csv
TYPE = "CSV"
COMPRESSION = "GZIP"
FILE_EXTENSION= 'csv.gz'
SKIP_HEADER = 1
ERROR_ON_COLUMN_COUNT_MISMATCH=FALSE
EMPTY_FIELD_AS_NULL = TRUE;
create or replace stage staged
file_format='r_csv';
copy into ARRAYLOC from @~/staged
file_format = (format_name = 'r_csv');
SELECT * FROM ARRAYLOC LIMIT 10;3 Réponses :
Votre erreur ne dit pas que vous avez trop de caractères, mais que votre fichier comporte 8 colonnes et votre table dispose de 9 colonnes. Il ne sait donc pas comment aligner les colonnes du fichier dans la table dans la table.
Vous pouvez énumérer les colonnes spécifiquement à l'aide d'une sous-requête dans votre notes: em> strong> p> Exemple: em> stry> p> Je conseillerai contre la modification du Copier dans CODE> Déclaration. p>
null code> ou une valeur par défaut. Dans mon exemple, je suppose que c'est la dernière colonne et je vais mettre l'horodatage actuel. Li>
error_on_column_count_mismatch Code> Paramètre, cela pourrait entraîner des données se terminant dans la mauvaise colonne de la table. Je conseillerais également de changer le paramètre on_error code> car je pense qu'il est préférable d'être alerté de telles erreurs plutôt que de les supprimer. P> P>
Donc, cela a fonctionné après avoir retiré le courant actuel_timettamp (), mais n'affué aucune donnée. Je devais mettre à jour les données.
Oui, définir cette option devrait aider. De La documentation : P>
error_on_column_count_mismatch = true | FAUX Utilisation: Chargement des données uniquement p>
Définition: Boolean qui spécifie s'il faut générer une erreur d'analyse Si le nombre de colonnes délimitées (i.e. champs) dans un fichier d'entrée ne fait ne correspond pas au nombre de colonnes dans la table correspondante. P>
Si défini sur False, une erreur n'est pas générée et la charge continue. Si Le fichier est chargé avec succès: P>
Si le fichier d'entrée contient des enregistrements avec plus de champs que des colonnes dans la table, les champs correspondants sont chargés par ordre d'occurrence dans Le fichier et les champs restants ne sont pas chargés. P>
Si le fichier d'entrée contient des enregistrements avec moins de champs que les colonnes de La table, les colonnes non correspondantes de la table sont chargées avec NULL valeurs. P>
Cette option suppose que tous les enregistrements dans le fichier d'entrée sont les mêmes. longueur (c'est-à-dire un fichier contenant des enregistrements de la longueur variable retourner un Erreur quelle que soit la valeur spécifiée pour ce paramètre). P> blockQuote>
Assumez donc que vous allez bien avec Obtenir des valeurs code> null code> pour la colonne manquante de vos données d'entrée, vous pouvez utiliser
error_on_column_count_mismatch = false code> pour charger le fichier avec succès. P >
Cela a aidé avec l'inadéquation, mais en vérité, j'ai fini par nettoyer les données.
Lors de la visualisation de cette table directement sur DATA.WORLD, il y a des colonnes nommées à la fois emplacements forts> et emplacement_2 strong> avec des données identiques. On dirait que l'affichage est erroné, car lors du téléchargement du CSV, il ne dispose que d'une seule colonne forte> forte>. Je soupçonne si vous modifiez votre Créer ou remplacer code> La déclaration suivante qui omet la création de emplacement_2 fort>, vous arriverez là où vous voulez aller: p>
C'était la première erreur, qui a réparé cela, mais j'avais également manqué beaucoup plus de nettoyage des données. Donc, je viens de supprimer le fichier de la scène et de commencer.