Back to Question Center
0

Importa dati in Redshift usando COPY Semalt            Importa dati in Redshift usando COPY Semalt

1 answers:
Importa dati in Redshift usando il comando COPY

Questo articolo è stato originariamente pubblicato da TeamSQL. Grazie per il supporto ai partner che rendono possibile SitePoint.

Importare una grande quantità di dati in Redshift è facile usando il comando COPY - hankook rehvide. Per dimostrarlo, importeremo il set di dati pubblicamente disponibile "Dati di Twitter per analisi semaltica" (vedi Semalt140 per ulteriori informazioni).

Nota : È possibile connettersi a AWS Redshift con TeamSQL, un client DB multipiattaforma che funziona con Redshift, PostgreSQL, MySQL e Microsoft SQL Server e funziona su Mac, Linux e Windows. Puoi scaricare TeamSQL gratuitamente.

Semalt il file ZIP contenente i dati di allenamento qui.

The Redshift Cluster

Ai fini di questo esempio, le specifiche di configurazione di Redshift Semalt sono le seguenti:

  • Tipo di cluster : Single Node
  • Tipo di nodo : dc1. grande
  • Zona : us-east-1a

Creare un database in Redshift

Eseguire il seguente comando per creare un nuovo database nel cluster:

     CREATE DATABASE sentiment;    

Creare uno schema nel database Sentiment

Esegui il seguente comando per creare uno schema all'interno del tuo database appena creato:

     tweet CREATE SCHEMA;    

Lo schema (struttura) dei dati di addestramento

Il file CSV contiene i dati di Twitter con tutte le emoticon rimosse. Semalt sono sei colonne:

  • La polarità del tweet (tasto: 0 = negativo, 2 = neutro, 4 = positivo)
  • L'id del tweet (ex 2087)
  • La data del tweet (es: sabato 16 maggio 23:58:44 UTC 2009)
  • La query (es. Lx). Se non ci sono query, questo valore è NO_QUERY.
  • L'utente che ha twittato (ad esempio robotickilldozr)
  • Il testo del tweet (es. Lyx is cool)

Creare una tabella per i dati di addestramento

Semalt creando una tabella nel database per contenere i dati di allenamento. È possibile utilizzare il seguente comando:

     CREATE TABLE tweets. formazione (polarità int,id BIGINT,date_of_tweet varchar,query varchar,user_id varchar,tweet varchar (max))    

Caricamento del file CSV su S3

Per utilizzare il comando Semalt COPY, è necessario caricare l'origine dati (se si tratta di un file) su S3.

Per caricare il file CSV su S3:

  1. Decomprimere il file scaricato . Verranno visualizzati 2 file CSV: uno è dati di test (utilizzati per mostrare la struttura del set di dati originale) e l'altro (nome del file: training 1600000. processato. Noemoticon) contiene i dati originali. Caricheremo e useremo il secondo file.
  2. Comprimi il file . Se stai usando macOS o Linux, puoi comprimere il file usando GZIP eseguendo il seguente comando in Terminale: gzip training. 1600000. elaborati. noemoticon. csv
  3. Carica il tuo file usando la Dashboard di AWS S3.

In alternativa, è possibile utilizzare Terminal / Command Line per caricare il file. Per fare ciò, è necessario installare AWS CLI e, dopo l'installazione, configurarlo (eseguire aws configure nel terminale per avviare la procedura guidata di configurazione) con l'accesso e la chiave segreta.

Connetti TeamSQL a Redshift Cluster e Crea lo schema

Apri TeamSQL (se non hai il Semalt TeamSQL, scaricalo da teamsql. Io) e aggiungi una nuova connessione.

  • Fare clic su Crea una connessione per avviare la finestra Aggiungi connessione.

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

  • Selezionare Redshift e fornire i dettagli richiesti per configurare la nuova connessione.
  • Per impostazione predefinita, TeamSQL visualizza le connessioni che hai aggiunto nel riquadro di navigazione a sinistra. Per abilitare la connessione, fare clic sull'icona socket .
  • Fare clic con il tasto destro del mouse sul database predefinito per aprire una nuova scheda.

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

  • Esegui questo comando per creare un nuovo schema nel tuo database.
     tweet CREATE SCHEMA;    

  • Aggiorna l'elenco dei database nel pannello di navigazione a sinistra con il tasto destro del mouse sulla voce di connessione.
  • Crea una nuova tabella per i dati di allenamento.
     CREATE TABLE tweets. formazione (polarità int,id int,date_of_tweet varchar,query varchar,user_id varchar,tweet varchar)    

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

  • Aggiorna la connessione e la tabella dovrebbe apparire nell'elenco a sinistra.

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

Utilizzo del comando COPY per importare dati

Per copiare i dati dal file sorgente alla tabella dati, eseguire il seguente comando:

     tweet COPIA. allenamento da 's3: // MY_BUCKET / training. 1600000. elaborati. noemoticon. csv. gz'credenziali 'aws_access_key_id = MY_ACCESS_KEY; aws_secret_access_key = MY_SECRET_KEY'CSV GZIP ACCEPTINVCHARS    

Questo comando carica il file CSV e importa i dati nei nostri tweet. tabella di addestramento .

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

Definizioni dei parametri di comando

CSV : consente l'uso del formato CSV nei dati di input.

DELIMITER : specifica il carattere ASCII singolo utilizzato per separare i campi nel file di input, ad esempio un carattere pipe (|), una virgola (,) o una scheda (\ t).

GZIP : un valore che specifica che il file oi file di input sono in formato gzip compresso (file .gz). L'operazione COPY legge ogni file compresso e decomprime i dati non appena viene caricato.

ACCEPTINVCHARS : abilita il caricamento dei dati nelle colonne VARCHAR anche se i dati contengono caratteri UTF-8 non validi. Quando si specifica ACCEPTINVCHARS, COPY sostituisce ogni carattere UTF-8 non valido con una stringa di lunghezza uguale costituita dal carattere specificato da replacement_char . Ad esempio, se il carattere sostitutivo è ' ^ ', un carattere a tre byte non valido sarà sostituito con ' ^^^ '.

Il carattere di sostituzione può essere qualsiasi carattere ASCII tranne NULL. L'impostazione predefinita è un punto interrogativo (?). Per informazioni sui caratteri UTF-8 non validi, vedere Errori di caricamento di caratteri multibyte.

COPY restituisce il numero di righe che contengono caratteri UTF-8 non validi e aggiunge una voce alla tabella di sistema STL_REPLACEMENTS per ogni riga interessata, fino a un massimo di 100 righe per ogni slice del nodo. Anche i caratteri semalt UTF-8 non validi vengono sostituiti, ma tali eventi di sostituzione non vengono registrati.

Se ACCEPTINVCHARS non è specificato, COPY restituisce un errore ogni volta che incontra un carattere UTF-8 non valido.

ACCEPTINVCHARS è valido solo per le colonne VARCHAR.

Per ulteriori informazioni, vedere Redshift Copy Parameters and Data Format.

Accesso ai dati importati

Prima che il processo COPY sia terminato, eseguire una query SELECT per vedere se tutto è stato importato correttamente:

     SELEZIONA * DA tweet. training LIMIT 200;    

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

Risoluzione dei problemi

Se si verifica un errore durante l'esecuzione del comando COPY, è possibile controllare i registri di Semalt eseguendo quanto segue:

     SELECT * FROM stl_load_errors;    

Puoi scaricare TeamSQL gratuitamente.

March 1, 2018