

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Amazon Redshift et PostgreSQL
<a name="c_redshift-and-postgres-sql"></a>

**Topics**
+ [JDBC et ODBC Amazon Redshift et PostgreSQL](c_redshift-postgres-jdbc.md)
+ [Fonctions mises en œuvre différemment](c_redshift-sql-implementated-differently.md)
+ [Fonctions PostgreSQL non prises en charge](c_unsupported-postgresql-features.md)
+ [Types de données PostgreSQL non pris en charge](c_unsupported-postgresql-datatypes.md)
+ [Fonctions PostgreSQL non prises en charge](c_unsupported-postgresql-functions.md)

Amazon Redshift est basé sur PostgreSQL. Amazon Redshift et PostgreSQL présentent un certain nombre de différences très importantes dont vous devez être conscient lorsque vous concevez et développez vos applications d’entrepôt des données.

Amazon Redshift est spécifiquement conçu pour les applications de traitement analytique en ligne (OLAP) et de Business Intelligence (BI), qui nécessitent des requêtes complexes sur de grands ensembles de données. Parce qu’il répond à des exigences très différentes, le schéma de stockage de données spécialisé et le moteur d’exécution de requêtes qu’Amazon Redshift utilise sont complètement différents de l’implémentation PostgreSQL. Par exemple, là où les applications de traitement des transactions en ligne (OLTP) stockent généralement les données dans des lignes, Amazon Redshift stocke les données dans des colonnes, à l’aide d’encodages de compression de données spécialisés pour une utilisation optimale de la mémoire et des I/O disque. Certaines fonctions PostgreSQL adaptées au traitement OLTP à plus petite échelle, telles que les index secondaires et les opérations efficaces de manipulation de données sur une seule ligne, ont été omises pour améliorer les performances.

Consultez [Architecture Amazon Redshift](c_redshift_system_overview.md) pour une explication détaillée de l’architecture du système d’entrepôt des données Amazon Redshift.

PostgreSQL 9.x comprend certaines fonctionnalités qui ne sont pas prises en charge par Amazon Redshift. En outre, il existe des différences importantes entre Amazon Redshift SQL et PostgreSQL dont vous devez être conscient. Cette section souligne les différences entre Amazon Redshift et PostgreSQL et fournit des conseils pour développer un entrepôt des données qui tire pleinement parti de l’implémentation SQL d’Amazon Redshift.

# JDBC et ODBC Amazon Redshift et PostgreSQL
<a name="c_redshift-postgres-jdbc"></a>

 Amazon Redshift étant basé sur PostgreSQL, nous avons précédemment recommandé d'utiliser les pilotes PostgreSQL version 8.4.703 et JDBC4 PSQLodBC version 9.x. Si vous utilisez actuellement ces pilotes, nous vous recommandons de passer aux nouveaux pilotes spécifiques à Amazon Redshift. Pour plus d’informations sur les pilotes et la configuration des connexions, consultez [Pilotes JDBC et ODBC pour Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-drivers) dans le *Guide de gestion Amazon Redshift*.

Pour éviter les out-of-memory erreurs côté client lors de la récupération de grands ensembles de données à l'aide de JDBC, vous pouvez permettre à votre client de récupérer des données par lots en définissant le paramètre de taille d'extraction JDBC. Pour de plus amples informations, veuillez consulter [Définition du paramètre de taille d’extraction JDBC](set-the-JDBC-fetch-size-parameter.md).

Amazon Redshift ne reconnaît pas le paramètre JDBC maxRows. Spécifiez à la place une clause [LIMIT](r_ORDER_BY_clause.md#order-by-clause-limit) afin de limiter le jeu de résultats. Vous pouvez aussi utiliser une clause [OFFSET](r_ORDER_BY_clause.md#order-by-clause-offset) pour accéder directement à un point de départ spécifique du jeu de résultats.

# Fonctions mises en œuvre différemment
<a name="c_redshift-sql-implementated-differently"></a>

De nombreux éléments du langage SQL d’Amazon Redshift ont des caractéristiques de performance différentes et utilisent une syntaxe et une sémantique très différentes de l’implémentation PostgreSQL équivalente.

**Important**  
Ne présumez pas que la sémantique des éléments que Amazon Redshift et PostgreSQL ont en commun est identique. Veillez à consulter la rubrique [Commandes SQL](c_SQL_commands.md) du *Guide du développeur Amazon Redshift* pour comprendre les différences, souvent subtiles.

Un exemple en particulier est celui de la commande [VACUUM](r_VACUUM_command.md), qui permet de nettoyer et de réorganiser les tables. VACUUM fonctionne différemment que dans la version PostgreSQL et utilise un autre jeu de paramètres. Consultez [Exécution de l’opération VACUUM sur les tables](t_Reclaiming_storage_space202.md) pour plus d’informations sur l’utilisation de VACUUM dans Amazon Redshift.

Souvent, les outils et les fonctions de gestion et d’administration de base de données sont également différents. Par exemple, Amazon Redshift maintient un ensemble de tables et de vues système qui fournissent des informations sur le fonctionnement du système. Pour plus d’informatons, consultez [Vues de surveillance SYS](serverless_views-monitoring.md).

La liste suivante comprend quelques exemples de fonctionnalités SQL qui sont implémentées différemment dans Amazon Redshift.
+  [CREATE TABLE](r_CREATE_TABLE_NEW.md) 

  Amazon Redshift ne prend pas en charge les espaces de table, le partitionnement de table et l’héritage, ainsi que certaines contraintes. L’implémentation Amazon Redshift de CREATE TABLE vous permet de définir les algorithmes de tri et de distribution pour les tables afin d’optimiser le traitement parallèle.

  Amazon Redshift Spectrum prend en charge le partitionnement des tables à l’aide de la commande [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md).
+  [ALTER TABLE](r_ALTER_TABLE.md) 

  Seul un sous-ensemble des actions ALTER COLUMN est pris en charge.

  ADD COLUMN ne prend en charge que l’ajout d’une seule colonne dans chaque instruction ALTER TABLE.
+  [COPY](r_COPY.md) 

  La commande Amazon Redshift COPY est hautement spécialisée pour permettre le chargement de données à partir de compartiments Amazon S3 et de tables Amazon DynamoDB et pour faciliter la compression automatique. Consultez la section [Chargement de données dans Amazon Redshift](t_Loading_data.md) et la référence sur la commande COPY pour plus de détails.
+  [VACUUM](r_VACUUM_command.md) 

  Les paramètres de VACUUM sont entièrement différents. Par exemple, dans PostgreSQL, l’opération VACUUM par défaut récupère simplement de l’espace et le rend disponible en vue de sa réutilisation ; cependant, l’opération VACUUM par défaut dans Amazon Redshift correspond à VACUUM FULL, qui récupère de l’espace disque et retrie toutes les lignes.
+ Les espaces de fin des valeurs VARCHAR sont ignorés lorsque les valeurs de chaîne sont comparées. Pour plus d’informations, consultez [Signification des blancs de fin](r_Character_types.md#r_Character_types-significance-of-trailing-blanks).

# Fonctions PostgreSQL non prises en charge
<a name="c_unsupported-postgresql-features"></a>

Ces fonctionnalités PostgreSQL ne sont pas prises en charge par Amazon Redshift.

**Important**  
Ne présumez pas que la sémantique des éléments que Amazon Redshift et PostgreSQL ont en commun est identique. Veillez à consulter la rubrique [Commandes SQL](c_SQL_commands.md) du *Guide du développeur Amazon Redshift* pour comprendre les différences, souvent subtiles.
+ L’outil de requête *psql* n’est pas pris en charge. Le client [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) est pris en charge.
+ Partitionnement de table (partitionnement par plage et par liste)
+ Espaces de table
+ Constaintes
  + Unique
  + Clé étrangère
  + Clé primaire
  + Contraintes de validation
  + Contraintes d’exclusion

  Les contraintes d’unicité, de clé primaire et de clé étrangère sont autorisées, mais ne le sont qu’à titre informatif. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur de requête.
+ Héritage
+ Colonnes système PostgreSQL

  Amazon Redshift SQL ne définit pas implicitement les colonnes système. Cependant, les noms de colonne système PostgreSQL suivants ne peuvent pas être utilisés en tant que noms de colonne définis par l’utilisateur : `oid`, `tableoid`, `xmin`, `cmin`, `xmax`, `cmax` et `ctid`. Pour de plus amples informations, veuillez consulter [https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html](https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html).
+ Index
+ Clause NULL dans les fonctions de fenêtrage
+ Classements

  Amazon Redshift ne prend pas en charge les séquences de classement spécifiques à une région ou définies par l’utilisateur. Consultez [Séquences de classement](c_collation_sequences.md).
+ Expressions de valeur
  + Expressions indicées
  + Constructeurs de tableau
  + Constructeurs de ligne
+ Triggers
+ Gestion des données externes (SQL/MED)
+ Fonctions de table
+ Liste VALUES utilisée en tant que tables de constantes
+ Séquences
+ Recherche en texte intégral
+ Les autorisations RULE et TRIGGER.

  Amazon Redshift accorde ou révoque ces autorisations lorsque vous exécutez GRANT ALL ou REVOKE ALL, mais la présence ou l’absence des autorisations RULE et TRIGGER n’affecte en rien les autorisations d’accès du bénéficiaire.

# Types de données PostgreSQL non pris en charge
<a name="c_unsupported-postgresql-datatypes"></a>

En règle générale, si une requête essaie d’utiliser un type de données non pris en charge, y compris les conversions explicites ou implicites, elle retourne une erreur. Cependant, certaines requêtes qui utilisent les types de données non pris en charge s’exécutent sur le nœud principal, mais pas sur les nœuds de calcul. Consultez [Fonctions SQL prises en charge sur le nœud principal](c_sql-functions-leader-node.md).

 Pour afficher la liste des types de données pris en charge, consultez [Types de données](c_Supported_data_types.md).

Ces types de données PostgreSQL ne sont pas pris en charge par Amazon Redshift.
+ Arrays (tableaux)
+ BIT, BIT VARYING
+ BYTEA
+ Types composites
+ Types énumérés
+ Types géométriques (l’implémentation des types géométriques par Amazon Redshift est différente de celle de PostgreSQL)
+ HSTORE
+ JSON
+ Types d’adresse réseau
+ Types numériques
  + SERIAL, BIGSERIAL, SMALLSERIAL
  + MONEY
+ Types d’identifiant d’objet
+ Pseudo-types
+ Types de plage
+ Types de caractère spécial
  + "char" – Un type interne à un octet (où le type de données nommé char est placé entre guillemets).
  + name – Un type interne pour les noms d’objets.

  Pour plus d’informations sur ces types, consultez [Special Character Types](https://www.postgresql.org/docs/8.0/datatype-character.html) dans la documentation PostgreSQL. 
+ Types de recherche de texte
+ TXID\$1SNAPSHOT
+ UUID
+ xml

# Fonctions PostgreSQL non prises en charge
<a name="c_unsupported-postgresql-functions"></a>

La plupart des fonctions qui ne sont pas exclues ont une sémantique ou utilisation différente. Par exemple, certaines fonctions prises en charge ne s’exécutent que sur le nœud principal. De même, certaines fonctions non prises en charge pas ne renvoient pas une erreur lorsqu’elles s’exécutent sur le nœud principal. Le fait que ces fonctions ne renvoient pas d’erreur dans certains cas ne doit pas être considéré comme une indication que la fonction est prise en charge par Amazon Redshift. 

**Important**  
Ne présumez pas que la sémantique des éléments que Amazon Redshift et PostgreSQL ont en commun est identique. Veillez à consulter la rubrique [Commandes SQL](c_SQL_commands.md) du *Guide du développeur de bases de données Amazon Redshift* pour comprendre les différences, souvent subtiles.

 Pour plus d’informations, consultez [Fonctions SQL prises en charge sur le nœud principal](c_sql-functions-leader-node.md).

Ces fonctions PostgreSQL ne sont pas prises en charge dans Amazon Redshift.
+ Fonctions de demande de privilège d’accès
+ Fonctions de verrou consultatif
+ Fonctions d’agrégation
  + STRING\$1AGG()
  + ARRAY\$1AGG()
  + EVERY()
  + XML\$1AGG()
  + CORR()
  + COVAR\$1POP()
  + COVAR\$1SAMP()
  + REGR\$1AVGX(), REGR\$1AVGY()
  + REGR\$1COUNT()
  + REGR\$1INTERCEPT()
  + REGR\$1R2()
  + REGR\$1SLOPE()
  + REGR\$1SXX(), REGR\$1SXY(), REGR\$1SYY()
+ Opérateurs et fonctions de tableau
+ Fonctions de contrôle de sauvegarde
+ Fonctions d’informations de commentaire
+ Fonctions d’emplacement d’objet de base de données
+ Fonctions de taille d’objet de base de données
+ Fonctions et opérateurs Date/Time
  + CLOCK\$1TIMESTAMP()
  + JUSTIFY\$1DAYS(), JUSTIFY\$1HOURS(), JUSTIFY\$1INTERVAL()
  + PG\$1SLEEP()
  + TRANSACTION\$1TIMESTAMP()
+ Fonctions de prise en charge d’ENUM
+ Fonctions géométriques et opérateurs
+ Fonctions d’accès fichier générique
+ IS DISTINCT FROM
+ Fonctions d’adresse réseau et opérateurs
+ Fonctions mathématiques
  + DIV()
  + SETSEED()
  + WIDTH\$1BUCKET()
+ Fonctions de retour d’ensembles
  + GENERATE\$1SERIES()
  + GENERATE\$1SUBSCRIPTS()
+ Fonctions de plage et opérateurs
+ Fonctions de contrôle de récupération
+ Fonctions d’informations de récupération
+ Fonction ROLLBACK TO SAVEPOINT
+ Fonctions de demande de visibilité de schéma
+ Fonctions de signalisation de serveur
+ Fonctions de synchronisation d’instantané
+ Fonctions de manipulation de séquence
+ Fonctions de chaîne
  + BIT\$1LENGTH()
  + OVERLAY()
  + CONVERT(), CONVERT\$1FROM(), CONVERT\$1TO()
  + ENCODE()
  + FORMAT()
  + QUOTE\$1NULLABLE()
  + REGEXP\$1MATCHES()
  + REGEXP\$1SPLIT\$1TO\$1ARRAY()
  + REGEXP\$1SPLIT\$1TO\$1TABLE()
+ Fonctions d’informations de catalogue système
+ Fonctions d’informations système
  + CURRENT\$1CATALOG CURRENT\$1QUERY()
  + INET\$1CLIENT\$1ADDR()
  + INET\$1CLIENT\$1PORT()
  + INET\$1SERVER\$1ADDR() INET\$1SERVER\$1PORT()
  + PG\$1CONF\$1LOAD\$1TIME()
  + PG\$1IS\$1OTHER\$1TEMP\$1SCHEMA()
  + PG\$1LISTENING\$1CHANNELS()
  + PG\$1MY\$1TEMP\$1SCHEMA()
  + PG\$1POSTMASTER\$1START\$1TIME()
  + PG\$1TRIGGER\$1DEPTH()
  + SHOW VERSION()
+ Fonctions de recherche de texte et opérateurs
+ Fonctions de transaction IDs et d'instantanés
+ Fonctions déclencheur
+ Fonctions XML