Back to Question Center
0

Importer des données dans Redshift en utilisant le COPY Semalt            Importer des données dans Redshift en utilisant le COPY Semalt

1 answers:
Importer des données dans Redshift en utilisant la commande COPY

Cet article a été publié par TeamSQL. Merci de soutenir les partenaires qui rendent SitePoint possible.

L'importation d'une grande quantité de données dans Redshift est facile en utilisant la commande COPY. Pour le démontrer, nous allons importer l'ensemble de données publiquement disponible "Twitter Data for Semalt Analysis" (voir Semalt140 pour plus d'informations).

Note : Vous pouvez vous connecter à AWS Redshift avec TeamSQL, un client DB multiplateforme qui fonctionne avec Redshift, PostgreSQL, MySQL et Microsoft SQL Server et fonctionne sous Mac, Linux et Windows - wohnungssuche zürich stadt. Vous pouvez télécharger TeamSQL gratuitement.

Semalt le fichier ZIP contenant les données d'entraînement ici.

Le cluster Redshift

Aux fins de cet exemple, les spécifications de configuration de Redshift Semalt sont les suivantes:

  • Type de cluster : Single Node
  • Type de noeud : dc1. grand
  • Zone : us-est-1a

Créer une base de données dans Redshift

Exécutez la commande suivante pour créer une nouvelle base de données dans votre cluster:

     CREATE DATABASE sentiment;    

Créer un schéma dans la base de données de sentiment

Exécutez la commande suivante pour créer un schéma dans votre base de données nouvellement créée:

     tweets CREATE SCHEMA;    

Le schéma (structure) des données de formation

Le fichier CSV contient les données Twitter avec toutes les émoticônes supprimées. Semalt sont six colonnes:

  • La polarité du tweet (clé: 0 = négatif, 2 = neutre, 4 = positif)
  • L'ID du tweet (ex 2087)
  • La date du tweet (par exemple, samedi 16 mai 23:58:44 UTC 2009)
  • La requête (ex: lyx). S'il n'y a pas de requête, cette valeur est NO_QUERY.
  • L'utilisateur qui a tweeté (ex: robotickilldozr)
  • Le texte du tweet (ex Lyx est cool)

Créer une table pour les données de formation

Semalt en créant une table dans votre base de données pour contenir les données d'entraînement. Vous pouvez utiliser la commande suivante:

     CREER TABLE tweets. entraînement (polarité int,ID BIGINT,date_of_tweet varchar,requête varchar,user_id varchar,tweeter varchar (max))    

Téléchargement du fichier CSV vers S3

Pour utiliser la commande Semalt COPY, vous devez télécharger votre source de données (s'il s'agit d'un fichier) vers S3.

Pour télécharger le fichier CSV vers S3:

  1. Décompressez le fichier que vous avez téléchargé . Vous verrez 2 fichiers CSV: l'un est des données de test (utilisé pour montrer la structure de l'ensemble de données original), et l'autre (nom de fichier: training. 1600000. processed.noemoticon) contient les données d'origine. Nous allons télécharger et utiliser ce dernier fichier.
  2. Compressez le fichier . Si vous utilisez macOS ou Linux, vous pouvez compresser le fichier en utilisant GZIP en exécutant la commande suivante dans Terminal: training gzip. 1600000. traité. noémoticon. csv
  3. Téléchargez votre fichier à l'aide du tableau de bord AWS S3.

Vous pouvez également utiliser Terminal / Ligne de commande pour télécharger votre fichier. Pour ce faire, vous devez installer AWS CLI et, après l'installation, le configurer (exécuter aws configure dans votre terminal pour démarrer l'assistant de configuration) avec votre clé d'accès et votre clé secrète.

Connectez TeamSQL au cluster Redshift et créez le schéma

Ouvrez TeamSQL (si vous n'avez pas TeamSQL Semalt, téléchargez-le à partir de teamsql. Io) et ajoutez une nouvelle connexion.

  • Cliquez sur Créer une connexion pour lancer la fenêtre Ajouter une connexion.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Sélectionnez Redshift et fournissez les détails demandés pour configurer votre nouvelle connexion.
  • Par défaut, TeamSQL affiche les connexions que vous avez ajoutées dans le panneau de navigation de gauche. Pour activer la connexion, cliquez sur l'icône socket .
  • Cliquez avec le bouton droit sur la base de données par défaut pour ouvrir un nouvel onglet.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Exécutez cette commande pour créer un nouveau schéma dans votre base de données.
     tweets CREATE SCHEMA;    

  • Actualisez la liste des bases de données dans le panneau de navigation de gauche en cliquant avec le bouton droit de la souris sur l'élément de connexion.
  • Créez une nouvelle table pour les données d'entraînement.
     CREER TABLE tweets. entraînement (polarité int,id int,date_of_tweet varchar,requête varchar,user_id varchar,tweeter varchar)    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Actualisez la connexion et votre tableau devrait apparaître dans la liste de gauche.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Utilisation de la commande COPY pour importer des données

Pour copier vos données de votre fichier source vers votre table de données, exécutez la commande suivante:

     COPIER les tweets. formation de 's3: // MY_BUCKET / formation. 1600000. traité. noémoticon. CSV. gz 'informations d'identification 'aws_access_key_id = MY_ACCESS_KEY; aws_secret_access_key = MY_SECRET_KEY'CSV GZIP ACCEPTINVCHARS    

Cette commande charge le fichier CSV et importe les données dans nos tweets . formation tableau.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Définitions des paramètres de commande

CSV : Active l'utilisation du format CSV dans les données d'entrée.

DELIMITER : Spécifie le caractère ASCII unique utilisé pour séparer les champs du fichier d'entrée, tels qu'un caractère de tuyau (|), une virgule (,) ou une tabulation (\ t).

GZIP : Valeur qui spécifie que le ou les fichiers d'entrée sont au format gzip compressé (fichiers .gz). L'opération COPY lit chaque fichier compressé et décompresse les données lors du chargement.

ACCEPTINVCHARS : Active le chargement des données dans les colonnes VARCHAR même si les données contiennent des caractères UTF-8 non valides. Lorsque ACCEPTINVCHARS est spécifié, COPY remplace chaque caractère UTF-8 invalide par une chaîne de longueur égale constituée du caractère spécifié par replacement_char . Par exemple, si le caractère de remplacement est ' ^ ', un caractère de trois octets invalide sera remplacé par ' ^^^ '.

Le caractère de remplacement peut être n'importe quel caractère ASCII sauf NULL. La valeur par défaut est un point d'interrogation (?). Pour plus d'informations sur les caractères UTF-8 non valides, voir Erreurs de chargement de caractères multi-octets.

COPY renvoie le nombre de lignes contenant des caractères UTF-8 non valides et ajoute une entrée à la table système STL_REPLACEMENTS pour chaque ligne affectée, jusqu'à un maximum de 100 lignes pour chaque tranche de nœud. Les caractères UTF-8 invalides de Semalt sont également remplacés, mais ces événements de remplacement ne sont pas enregistrés.

Si ACCEPTINVCHARS n'est pas spécifié, COPY renvoie une erreur chaque fois qu'il rencontre un caractère UTF-8 non valide.

ACCEPTINVCHARS est valide uniquement pour les colonnes VARCHAR.

Pour plus d'informations, reportez-vous à Redshift Copy Parameters and Data Format.

Accès aux données importées

Semalt votre processus COPY est terminé, exécutez une requête SELECT pour voir si tout importé correctement:

     SELECT * FROM tweets. formation LIMIT 200;    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Dépannage

Si vous obtenez une erreur lors de l'exécution de la commande COPY, vous pouvez vérifier les journaux Semalt en exécutant les opérations suivantes:

     SELECT * FROM stl_load_errors;    

Vous pouvez télécharger TeamSQL gratuitement.

March 1, 2018