Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Chargez BLOB des fichiers en TEXT utilisant le codage de fichiers dans Aurora Postgre -Compatible SQL
Créé par Bhanu Ganesh Gudivada (AWS) et Jeevan Shetty () AWS
Environnement : Production | Source : base de données Oracle locale | Cible : compatible avec Aurora Postgre SQL |
Type R : Ré-architecte | Charge de travail : Oracle ; logiciel libre | Technologies : migration ; bases de données |
AWSservices : Amazon Aurora |
Récapitulatif
Au cours de la migration, il arrive souvent que vous deviez traiter des données structurées et non structurées chargées à partir de fichiers sur un système de fichiers local. Les données peuvent également se trouver dans un jeu de caractères différent de celui de la base de données.
Ces fichiers contiennent les types de données suivants :
Métadonnées : ces données décrivent la structure du fichier.
Données semi-structurées : il s'agit de chaînes textuelles dans un format spécifique, tel que JSON ou. XML Vous pouvez peut-être faire des assertions à propos de ces données, par exemple « commencera toujours par « < » ou « ne contient aucun caractère de nouvelle ligne ».
Texte intégral — Ces données contiennent généralement tous les types de caractères, y compris les caractères de nouvelle ligne et les guillemets. Il peut également être composé de caractères multioctets en UTF -8.
Données binaires : ces données peuvent contenir des octets ou des combinaisons d'octets, y compris des valeurs nulles et des end-of-file marqueurs.
Le chargement d'une combinaison de ces types de données peut s'avérer difficile.
Le modèle peut être utilisé avec les bases de données Oracle sur site, les bases de données Oracle qui se trouvent sur des instances Amazon Elastic Compute Cloud (AmazonEC2) sur le cloud Amazon Web Services (AWS) et Amazon Relational Database Service (RDSAmazon) pour les bases de données Oracle. Par exemple, ce modèle utilise Amazon Aurora Postgre SQL -Compatible Edition.
Dans Oracle Database, à l'aide d'un pointeur BFILE
(fichier binaire), du DBMS_LOB
package et des fonctions du système Oracle, vous pouvez charger à partir d'un fichier et le convertir au format CLOB par codage de caractères. Postgre SQL ne prenant pas en charge le type de BLOB données lors de la migration vers une base de données Amazon Aurora Postgre SQL -Compatible Edition, ces fonctions doivent être converties en scripts compatibles avec Postgre. SQL
Ce modèle propose deux approches pour charger un fichier dans une seule colonne de base de données d'une base de données SQL compatible avec Amazon Aurora Postgre :
Approche 1 — Vous importez des données depuis votre compartiment Amazon Simple Storage Service (Amazon S3) en utilisant
table_import_from_s3
la fonction de l'extension avecaws_s3
l'option d'encodage.Approche 2 — Vous codez en hexadécimal à l'extérieur de la base de données, puis vous le décodez pour afficher à
TEXT
l'intérieur de la base de données.
Nous vous recommandons d'utiliser Approach 1 car Aurora Postgre SQL -Compatible est directement intégré à l'aws_s3
extension.
Ce modèle utilise l'exemple du chargement d'un fichier plat contenant un modèle d'e-mail, comportant des caractères multioctets et un formatage distinct, dans une base de données SQL compatible avec Amazon Aurora Postgre.
Conditions préalables et limitations
Prérequis
Un AWS compte actif
Une RDS instance Amazon ou une instance compatible avec Aurora Postgre SQL
Compréhension de base du système SQL de gestion de base de données relationnelle () RDBMS
Un bucket Amazon Simple Storage Service (Amazon S3).
Connaissance des fonctions du système dans Oracle et Postgre SQL
RPMPackage HexDump - XXD -0.1.1 (inclus avec Amazon Linux 2)
Remarque : le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez Amazon Linux 2 FAQs
.
Limites
Pour le type de
TEXT
données, la plus longue chaîne de caractères pouvant être stockée est d'environ 1 Go.
Versions du produit
Aurora prend en charge les SQL versions de Postgre répertoriées dans les mises à jour d'Amazon Aurora Postgre SQL.
Architecture
Pile technologique cible
Compatible avec Aurora Postgre SQL
Architecture cible
Approche 1 — Utilisation de aws_s3.table_import_from_s3
À partir d'un serveur sur site, un fichier contenant un modèle d'e-mail avec des caractères multioctets et un formatage personnalisé est transféré vers Amazon S3. La fonction de base de données personnalisée fournie par ce modèle utilise la aws_s3.table_import_from_s3
fonction with file_encoding
pour charger des fichiers dans la base de données et renvoyer les résultats de la requête sous forme de type de TEXT
données.
Les fichiers sont transférés vers le compartiment S3 intermédiaire.
Les fichiers sont chargés dans la base de données SQL compatible avec Amazon Aurora Postgre.
À l'aide du pgAdmin client, la fonction personnalisée
load_file_into_clob
est déployée dans la base de données Aurora.La fonction personnalisée est utilisée en interne
table_import_from_s3
avec file_encoding. La sortie de la fonction est obtenue en utilisantarray_to_string
etarray_agg
commeTEXT
sortie.
Approche 2 — Encodage en hexadécimal à l'extérieur de la base de données et décodage pour affichage à TEXT l'intérieur de la base de données
Un fichier provenant d'un serveur local ou d'un système de fichiers local est converti en vidage hexadécimal. Le fichier est ensuite importé dans Postgre SQL sous forme de TEXT
champ.
Convertissez le fichier en vidage hexadécimal dans la ligne de commande à l'aide de l'
xxd -p
option.Téléchargez les fichiers de vidage hexadécimal dans Aurora Postgre SQL -Compatible à l'aide de l'
\copy
option, puis décodez les fichiers de vidage hexadécimal en binaire.Codez les données binaires à renvoyer sous la forme
TEXT
.
Outils
AWSservices
Amazon Aurora Postgre SQL -Compatible Edition est un moteur de base de données relationnelle entièrement géré ACID et conforme qui vous aide à configurer, exploiter et dimensionner les déploiements Postgre. SQL
AWSL'interface de ligne de commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.
Autres outils
pgAdmin4
est une plateforme d'administration et de développement open source pour PostgreSQL. pgAdmin4 peut être utilisé sous Linux, Unix, Mac OS et Windows pour gérer SQL Postgre.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Lancez une instance EC2. | Pour obtenir des instructions sur le lancement d'une instance, consultez Lancer votre instance. | DBA |
Installez l' pgAdmin outil SQL client Postgre. | Téléchargez et installez pgAdmin | DBA |
Créez une IAM politique. | Créez une politique AWS Identity and Access Management (IAM) nommée
| DBA |
Créez un IAM rôle pour l'importation d'objets depuis Amazon S3 vers Aurora Postgre SQL -Compatible. | Utilisez le code suivant pour créer un IAM rôle nommé
| DBA |
Associez le IAM rôle au cluster. | Pour associer le IAM rôle au cluster de base de données SQL compatible Aurora Postgre, exécutez la commande suivante AWSCLI. Modifiez
| DBA |
Téléchargez l'exemple sur Amazon S3. |
| DBA, propriétaire de l'application |
Déployez la fonction personnalisée. |
| Propriétaire de l'application, DBA |
Exécutez la fonction personnalisée pour importer les données dans la base de données. | Exécutez la SQL commande suivante en remplaçant les éléments entre crochets par les valeurs appropriées.
Remplacez les éléments entre crochets par les valeurs appropriées, comme indiqué dans l'exemple suivant, avant d'exécuter la commande.
La commande charge le fichier depuis Amazon S3 et renvoie le résultat sous la forme | Propriétaire de l'application, DBA |
Tâche | Description | Compétences requises |
---|---|---|
Convertissez le fichier modèle en un dump hexadécimal. | L'utilitaire Hexdump affiche le contenu des fichiers binaires en hexadécimal, décimal, octal ou. ASCII La Pour convertir le contenu du fichier en un dump hexadécimal, exécutez la commande shell suivante.
Remplacez le chemin et le fichier par les valeurs appropriées, comme indiqué dans l'exemple suivant.
| DBA |
Chargez le fichier hexdump dans le schéma de base de données. | Utilisez les commandes suivantes pour charger le fichier hexdump dans la base de données compatible Aurora PostgreSQL.
| DBA |
Ressources connexes
Références
Didacticiels
Informations supplémentaires
Fonction personnalisée 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$;
Modèle d'e-mail
###################################################################################### ## ## ## 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.