Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Carica BLOB i file TEXT utilizzando la codifica dei file in SQL Aurora Postgre -Compatible
Creato da Bhanu Ganesh Gudivada () e Jeevan Shetty () AWS AWS
Ambiente: produzione | Fonte: database Oracle locale | Obiettivo: Aurora Postgre -Compatibile SQL |
Tipo R: Re-architect | Carico di lavoro: Oracle; open source | Tecnologie: migrazione; database |
AWSservizi: Amazon Aurora |
Riepilogo
Spesso durante la migrazione, ci sono casi in cui è necessario elaborare dati strutturati e non strutturati caricati da file su un file system locale. I dati potrebbero anche essere in un set di caratteri diverso dal set di caratteri del database.
Questi file contengono i seguenti tipi di dati:
Metadati: questi dati descrivono la struttura del file.
Dati semistrutturati: si tratta di stringhe di testo in un formato specifico, ad esempio o. JSON XML Potresti essere in grado di fare affermazioni su tali dati, ad esempio «inizierà sempre con '<'" o «non contiene caratteri di nuova riga».
Testo completo: questi dati in genere contengono tutti i tipi di caratteri, inclusi i caratteri di nuova riga e le virgolette. Potrebbe anche essere composto da caratteri multibyte in -8. UTF
Dati binari: questi dati possono contenere byte o combinazioni di byte, inclusi valori nulli e marcatori. end-of-file
Caricare una combinazione di questi tipi di dati può essere difficile.
Il modello può essere utilizzato con database Oracle locali, database Oracle che si trovano su istanze Amazon Elastic Compute Cloud (AmazonEC2) su Amazon Web Services (AWS) Cloud e Amazon Relational Database Service (RDSAmazon) per database Oracle. Ad esempio, questo modello utilizza Amazon Aurora SQL Postgre -Compatible Edition.
In Oracle Database, con l'aiuto di un puntatore BFILE
(file binario), del DBMS_LOB
pacchetto e delle funzioni di sistema Oracle, puoi caricare dal file e convertirlo con la codifica dei caratteri. CLOB Poiché Postgre SQL non supporta il tipo di BLOB dati durante la migrazione a un database Amazon Aurora Postgre SQL -Compatible Edition, queste funzioni devono essere convertite in script compatibili con Postgre. SQL
Questo modello fornisce due approcci per caricare un file in una singola colonna di database in un database compatibile con Amazon Aurora SQL Postgre:
Approccio 1: importi i dati dal tuo bucket Amazon Simple Storage Service (Amazon S3) utilizzando
table_import_from_s3
la funzione dell'estensione con l'opzioneaws_s3
encode.Approccio 2: si codifica in formato esadecimale all'esterno del database, quindi si decodifica per visualizzare all'interno del database.
TEXT
Si consiglia di utilizzare Approach 1 perché Aurora Postgre SQL -Compatible ha un'integrazione diretta con l'estensione. aws_s3
Questo modello utilizza l'esempio del caricamento di un file flat contenente un modello di e-mail, con caratteri multibyte e una formattazione distinta, in un database compatibile con Amazon Aurora Postgre. SQL
Prerequisiti e limitazioni
Prerequisiti
Un account attivo AWS
Un'RDSistanza Amazon o un'istanza compatibile con Aurora SQL Postgre
Una conoscenza di base del sistema di gestione di SQL database relazionali () RDBMS
Un bucket Amazon Simple Storage Service (Amazon S3).
Conoscenza delle funzioni di sistema in Oracle e Postgre SQL
RPMPackage HexDump - XXD -0.1.1 (incluso con Amazon Linux 2)
Nota: Amazon Linux 2 sta per terminare il supporto. Per ulteriori informazioni, consulta Amazon Linux 2 FAQs
.
Limitazioni
Per il tipo di
TEXT
dati, la stringa di caratteri più lunga possibile che può essere memorizzata è di circa 1 GB.
Versioni del prodotto
Architettura
Stack tecnologico Target
Aurora Postgre -Compatibile SQL
Architettura Target
Approccio 1: utilizzo di aws_s3.table_import_from_s3
Da un server locale, un file contenente un modello di e-mail con caratteri multibyte e formattazione personalizzata viene trasferito su Amazon S3. La funzione di database personalizzata fornita da questo modello utilizza la aws_s3.table_import_from_s3
funzione with file_encoding
per caricare file nel database e restituire i risultati delle query come tipo di dati. TEXT
I file vengono trasferiti nel bucket S3 di staging.
I file vengono caricati nel database compatibile con Amazon Aurora SQL Postgre.
Utilizzando il pgAdmin client, la funzione personalizzata
load_file_into_clob
viene distribuita nel database Aurora.La funzione personalizzata utilizza
table_import_from_s3
internamente file_encoding. L'output della funzione viene ottenuto utilizzandoarray_to_string
e come output.array_agg
TEXT
Approccio 2: codifica in formato esadecimale all'esterno del database e decodifica per la visualizzazione all'interno del database TEXT
Un file proveniente da un server locale o da un file system locale viene convertito in un dump esadecimale. Quindi il file viene importato in Postgre SQL come campo. TEXT
Converti il file in un dump esadecimale nella riga di comando utilizzando l'opzione.
xxd -p
Carica i file di dump esadecimali in Aurora SQL Postgre -Compatible utilizzando
\copy
l'opzione, quindi decodifica i file di dump esadecimali in formato binario.Codifica i dati binari per restituirli come.
TEXT
Strumenti
AWSservizi
Amazon Aurora Postgre SQL -Compatible Edition è un motore di database relazionale completamente gestito e ACID conforme che ti aiuta a configurare, gestire e scalare le distribuzioni Postgre. SQL
AWSCommand Line Interface (AWSCLI) è uno strumento open source che ti aiuta a interagire con i servizi tramite comandi nella shell della riga di comando. AWS
Altri strumenti
pgAdmin4
è una piattaforma di amministrazione e sviluppo open source per SQL Postgre. pgAdmin4 può essere utilizzato su Linux, Unix, mac OS e Windows per gestire Postgre. SQL
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Avviare un'istanza EC2. | Per istruzioni sull'avvio di un'istanza, consulta Launch your istance. | DBA |
Installa lo strumento client Postgre. SQL pgAdmin | Scaricare e installare pgAdmin | DBA |
Crea una politica. IAM | Crea una policy AWS Identity and Access Management (IAM) denominata
| DBA |
Crea un IAM ruolo per l'importazione di oggetti da Amazon S3 a Aurora Postgre -Compatible. SQL | Usa il codice seguente per creare un IAM ruolo denominato
| DBA |
Associa il IAM ruolo al cluster. | Per associare il IAM ruolo al cluster di database Aurora Postgre SQL -Compatible, esegui il comando seguente. AWS CLI Passa
| DBA |
Carica l'esempio su Amazon S3. |
| DBA, Proprietario dell'app |
Implementa la funzione personalizzata. |
| Proprietario dell'app, DBA |
Esegui la funzione personalizzata per importare i dati nel database. | Esegui il SQL comando seguente, sostituendo gli elementi tra parentesi angolari con i valori appropriati.
Sostituite gli elementi tra parentesi angolari con i valori appropriati, come illustrato nell'esempio seguente, prima di eseguire il comando.
Il comando carica il file da Amazon S3 e restituisce l'output come. | Proprietario dell'app, DBA |
Attività | Descrizione | Competenze richieste |
---|---|---|
Converti il file modello in un dump esadecimale. | L'utilità Hexdump visualizza il contenuto dei file binari in formato esadecimale, decimale, ottale o. ASCII Il Per convertire il contenuto del file in un dump esadecimale, esegui il seguente comando shell.
Sostituite il percorso e il file con i valori appropriati, come mostrato nell'esempio seguente.
| DBA |
Carica il file hexdump nello schema del database. | Usa i seguenti comandi per caricare il file hexdump nel database Aurora Postgre -Compatible. SQL
| DBA |
Risorse correlate
Riferimenti
Tutorial
Informazioni aggiuntive
funzione personalizzata load_file_into_clob
CREATE OR REPLACE FUNCTION load_file_into_clob( s3_bucket_name text, s3_bucket_region text, file_name text, file_delimiter character DEFAULT '&'::bpchar, file_encoding text DEFAULT 'UTF8'::text) RETURNS text LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ DECLARE blob_data BYTEA; clob_data TEXT; l_table_name CHARACTER VARYING(50) := 'file_upload_hex'; l_column_name CHARACTER VARYING(50) := 'template'; l_return_text TEXT; l_option_text CHARACTER VARYING(150); l_sql_stmt CHARACTER VARYING(500); BEGIN EXECUTE format ('CREATE TEMPORARY TABLE %I (%I text, id_serial serial)', l_table_name, l_column_name); l_sql_stmt := 'select ''(format text, delimiter ''''' || file_delimiter || ''''', encoding ''''' || file_encoding || ''''')'' '; EXECUTE FORMAT(l_sql_stmt) INTO l_option_text; EXECUTE FORMAT('SELECT aws_s3.table_import_from_s3($1,$2,$6, aws_commons.create_s3_uri($3,$4,$5))') INTO l_return_text USING l_table_name, l_column_name, s3_bucket_name, file_name,s3_bucket_region,l_option_text; EXECUTE format('select array_to_string(array_agg(%I order by id_serial),E''\n'') from %I', l_column_name, l_table_name) INTO clob_data; drop table file_upload_hex; RETURN clob_data; END; $BODY$;
Modello di email
###################################################################################### ## ## ## johndoe Template Type: email ## ## File: johndoe.salary.event.notification.email.vm ## ## Author: Aimée Étienne Date 1/10/2021 ## ## Purpose: Email template used by EmplmanagerEJB to inform a johndoe they ## ## have been given access to a salary event ## ## Template Attributes: ## ## invitedUser - PersonDetails object for the invited user ## ## salaryEvent - OfferDetails object for the event the user was given access ## ## buyercollege - CompDetails object for the college owning the salary event ## ## salaryCoordinator - PersonDetails of the salary coordinator for the event ## ## idp - Identity Provider of the email recipient ## ## httpWebRoot - HTTP address of the server ## ## ## ###################################################################################### $!invitedUser.firstname $!invitedUser.lastname, Ce courriel confirme que vous avez ete invite par $!salaryCoordinator.firstname $!salaryCoordinator.lastname de $buyercollege.collegeName a participer a l'evenement "$salaryEvent.offeringtitle" sur johndoeMaster Sourcing Intelligence. Votre nom d'utilisateur est $!invitedUser.username Veuillez suivre le lien ci-dessous pour acceder a l'evenement. ${httpWebRoot}/myDashboard.do?idp=$!{idp} Si vous avez oublie votre mot de passe, utilisez le lien "Mot de passe oublie" situe sur l'ecran de connexion et entrez votre nom d'utilisateur ci-dessus. Si vous avez des questions ou des preoccupations, nous vous invitons a communiquer avec le coordonnateur de l'evenement $!salaryCoordinator.firstname $!salaryCoordinator.lastname au ${salaryCoordinator.workphone}. ******* johndoeMaster Sourcing Intelligence est une plateforme de soumission en ligne pour les equipements, les materiaux et les services. Si vous avez des difficultes ou des questions, envoyez un courriel a support@johndoeMaster.com pour obtenir de l'aide.