CREATE DATABASE¶
Crée une nouvelle base de données dans le systÚme.
Cette commande prend en charge les variantes suivantes :
CREATE OR ALTER DATABASE : crĂ©e une base de donnĂ©es si elle nâexiste pas ou modifie une base de donnĂ©es existante.
CREATE DATABASE ⊠CLONE : crĂ©e un clone dâune base de donnĂ©es existante, soit Ă son statut actuel, soit Ă un moment prĂ©cis dans le passĂ© (en utilisant Time Travel). Pour plus dâinformations sur le clonage dâune base de donnĂ©es, voir Remarques relatives au clonage.
De plus, cette commande peut ĂȘtre utilisĂ©e pour :
CrĂ©er une base de donnĂ©es Ă partir dâune annonce. Voir Ă propos du partage avec les annonces.
CrĂ©ez une base de donnĂ©es Ă partir dâun partage fourni par un autre compte Snowflake. Pour plus dâinformations sur les partages, voir Ă propos de Secure Data Sharing.
CrĂ©er un rĂ©pliqua dâune base de donnĂ©es principale existante (par exemple, une base de donnĂ©es secondaire). Pour plus dâinformations sur la rĂ©plication de base de donnĂ©es, voir Introduction Ă la rĂ©plication de base de donnĂ©es sur plusieurs comptes.
Astuce
Outre SQL, vous pouvez Ă©galement utiliser dâautres interfaces, telles que Snowflake REST APIs, Snowflake Python APIs et Snowflake CLI. Voir Interfaces alternatives.
- Voir aussi :
ALTER DATABASE , DESCRIBE DATABASE , DROP DATABASE , SHOW DATABASES , UNDROP DATABASE
DESCRIBE SHARE , SHOW SHARES, CREATE LISTING, CREATE OR ALTER <objet>
Syntaxe¶
Base de données standard
CREATE [ OR REPLACE ] [ TRANSIENT ] DATABASE [ IF NOT EXISTS ] <name>
[ CLONE <source_schema>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
[ IGNORE TABLES WITH INSUFFICIENT DATA RETENTION ]
[ IGNORE HYBRID TABLES ] ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ COMMENT = '<string_literal>' ]
[ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' ]
[ CATALOG_SYNC_NAMESPACE_MODE = { NEST | FLATTEN } ]
[ CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
Base de donnĂ©es standard (Ă partir dâune annonce)
CREATE DATABASE <name> FROM LISTING '<listing_global_name>'
Base de donnĂ©es partagĂ©e (Ă partir dâun partage)
CREATE DATABASE <name> FROM SHARE <provider_account>.<share_name>
Base de données secondaire (réplication de base de données)
CREATE DATABASE <name>
AS REPLICA OF <account_identifier>.<primary_db_name>
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
Syntaxe des variantes¶
CREATE OR ALTER DATABASE¶
CrĂ©e une nouvelle base de donnĂ©es si elle nâexiste pas encore, ou remplace une base de donnĂ©es existante par la base de donnĂ©es dĂ©finie dans lâinstruction. Une instruction CREATE OR ALTER DATABASE suit les rĂšgles syntaxiques dâune instruction CREATE DATABASE et prĂ©sente les mĂȘmes limitations quâune instruction ALTER DATABASE.
Les modifications suivantes sont prises en charge :
Modification des propriétés et paramÚtres suivants de la base de données :
Pour plus dâinformations, voir Notes sur lâutilisation de CREATE OR ALTER DATABASE.
CREATE OR ALTER [ TRANSIENT ] DATABASE <name>
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ LOG_LEVEL = '<log_level>' ]
[ TRACE_LEVEL = '<trace_level>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ COMMENT = '<string_literal>' ]
CREATE DATABASE ⊠CLONE¶
CrĂ©e une nouvelle base de donnĂ©es avec les mĂȘmes valeurs de paramĂštre :
CREATE [ OR REPLACE ] DATABASE [ IF NOT EXISTS ] <name> CLONE <source_database> [ ... ]
Pour plus de détails, voir CREATE <objet> ⊠CLONE.
ParamÚtres requis¶
name
Indique lâidentificateur de la base de donnĂ©es ; il doit ĂȘtre unique pour votre compte.
De plus, lâidentificateur doit commencer par un caractĂšre alphabĂ©tique et ne peut pas contenir dâespaces ou de caractĂšres spĂ©ciaux Ă moins que toute la chaĂźne dâidentificateur soit dĂ©limitĂ©e par des guillemets doubles (p. ex.
"My object"
). Les identificateurs entre guillemets doubles sont Ă©galement sensibles Ă la casse.Pour plus de dĂ©tails, voir Exigences relatives Ă lâidentificateur.
Important
En tant que meilleure pratique pour la rĂ©plication et le basculement de la base de donnĂ©es, nous vous recommandons de donner Ă chaque base de donnĂ©es secondaire le mĂȘme nom que sa base de donnĂ©es principale. Cette recommandation prend en charge le rĂ©fĂ©rencement dâobjets pleinement qualifiĂ©s (câest-Ă -dire
'<bd>.<schéma>.<objet>'
) par dâautres objets dans la mĂȘme base de donnĂ©es, comme la requĂȘte dâun nom de table complet dans une vue.Si une base de donnĂ©es secondaire a un autre nom que celui de la base de donnĂ©es principale, ces rĂ©fĂ©rences dâobjet ne fonctionneraient plus dans la base de donnĂ©es secondaire.
ParamÚtres Secure Data Sharing¶
provider_account.share_name
SpĂ©cifie lâidentificateur du partage Ă partir duquel crĂ©er la base de donnĂ©es. Tel que documentĂ©, le nom du partage doit ĂȘtre complet avec le nom du compte qui fournit le partage.
ParamÚtres de réplication de base de données¶
Important
Cette section dĂ©crit une fonction de rĂ©plication de base de donnĂ©es limitĂ©e qui est diffĂ©rente de la fonction de rĂ©plication de compte. Snowflake recommande vivement dâutiliser la fonction de rĂ©plication de compte pour rĂ©pliquer et basculer les bases de donnĂ©es.
AS REPLICA OF account_identifier.primary_db_name
SpĂ©cifie lâidentificateur dâune base de donnĂ©es principale Ă partir de laquelle crĂ©er un rĂ©plica (câest-Ă -dire une base de donnĂ©es secondaire). Si lâidentificateur contient des espaces, des caractĂšres spĂ©ciaux ou des caractĂšres majuscules et minuscules, toute la chaĂźne doit ĂȘtre dĂ©limitĂ©e par des guillemets doubles.
Requiert lâidentificateur du compte et le nom de la base de donnĂ©es principale.
account_identifier
Identificateur unique du compte qui stocke la base de donnĂ©es principale. Lâidentificateur prĂ©fĂ©rĂ© est
organization_name.account_name
. Pour afficher la liste des comptes activĂ©s pour la rĂ©plication dans votre organisation, interrogez SHOW REPLICATION ACCOUNTS.Bien que lâancien localisateur de compte puisse Ă©galement ĂȘtre utilisĂ© comme identificateur de compte, son utilisation est dĂ©conseillĂ©e, car il pourrait ne plus fonctionner Ă lâavenir. Pour plus de dĂ©tails sur lâutilisation du localisateur de compte comme identificateur de compte, voir Notes sur lâutilisation de la rĂ©plication de base de donnĂ©es.
primary_db_name
Nom de la base de donnĂ©es principale. Il est recommandĂ© de donner Ă chaque base de donnĂ©es secondaire le mĂȘme nom que sa base de donnĂ©es principale.
Note
Comme meilleure pratique pour la rĂ©plication et le basculement des bases de donnĂ©es, nous recommandons de dĂ©finir le paramĂštre facultatif DATA_RETENTION_TIME_IN_DAYS sur la mĂȘme valeur sur la base de donnĂ©es secondaire que sur la base de donnĂ©es principale.
ParamĂštres dâannonce¶
'listing_global_name'
SpĂ©cifie le nom global de lâannonce Ă partir de laquelle crĂ©er la base de donnĂ©es, qui doit rĂ©pondre aux exigences suivantes :
Ne peut pas ĂȘtre un listing payant.
Conditions de lâannonce, si elles ne sont pas de type
OFFLINE
, elles doit avoir Ă©tĂ© acceptĂ©es avec Snowsight.Les produits de donnĂ©es dâannonce doivent ĂȘtre disponibles localement dans la rĂ©gion actuelle.
La disponibilitĂ© dâun listing dans la rĂ©gion locale peut ĂȘtre dĂ©terminĂ©e en consultant la colonne
is_ready_for_import
de DESCRIBE AVAILABLE LISTING.
Vous devez avoir le privilĂšge IMPORT LISTING de crĂ©er une base de donnĂ©es Ă partir dâune annonce. Vous devez avoir le privilĂšge IMPORT SHARE de crĂ©er une base de donnĂ©es Ă partir dâun partage.
ParamÚtres facultatifs¶
TRANSIENT
SpĂ©cifie une base de donnĂ©es comme transitoire. Les bases de donnĂ©es transitoires nâont pas de pĂ©riode Fail-safe et nâencourent donc pas de coĂ»ts de stockage supplĂ©mentaires une fois quâelles quittent la pĂ©riode Time Travel ; cependant, cela signifie Ă©galement quâelles ne sont pas protĂ©gĂ©es par Fail-safe en cas de perte de donnĂ©es. Pour plus dâinformations, voir ComprĂ©hension et affichage de Fail-safe.
De plus, par dĂ©finition, tous les schĂ©mas (et donc toutes les tables) créés dans une base de donnĂ©es transitoire sont transitoires. Pour plus dâinformations sur les tables transitoires, voir CREATE TABLE.
Par défaut : aucune valeur (la base de données est permanente)
CLONE source_db
SpĂ©cifie de crĂ©er un clone de la base de donnĂ©es source spĂ©cifiĂ©e. Pour plus dâinformations sur le clonage dâune base de donnĂ©es, voir CREATE <objet> ⊠CLONE.
AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )
Lors du clonage dâune base de donnĂ©es, la clause AT | BEFORE spĂ©cifie dâutiliser Time Travel pour cloner la base de donnĂ©es Ă ou avant un point spĂ©cifique dans le passĂ©. Si la durĂ©e Time Travel spĂ©cifiĂ©e est antĂ©rieure ou Ă©gale Ă la date de crĂ©ation de la base de donnĂ©es, lâopĂ©ration de clonage Ă©choue avec une erreur.
IGNORE TABLES WITH INSUFFICIENT DATA RETENTION
Ignorez les tables qui nâont plus de donnĂ©es historiques disponibles dans Time Travel Ă cloner. Si le moment dans le passĂ© spĂ©cifiĂ© dans la clause AT | BEFORE dĂ©passe la pĂ©riode de conservation des donnĂ©es pour toute table enfant dans une base de donnĂ©es ou un schĂ©ma, ignorez lâopĂ©ration de clonage pour la table enfant. Pour plus dâinformations, voir Objets enfants et durĂ©e de conservation des donnĂ©es.
IGNORE HYBRID TABLES
Ignorez les tables hybrides, qui ne seront pas clonĂ©es. Utilisez cette option pour cloner une base de donnĂ©es contenant des tables hybrides. La base de donnĂ©es clonĂ©e inclut dâautres objets mais ignore les tables hybrides.
Si vous nâutilisez pas cette option et que votre base de donnĂ©es contient une ou plusieurs tables hybrides, la commande ignore silencieusement les tables hybrides. Cependant, le traitement des erreurs pour les bases de donnĂ©es contenant des tables hybrides changera dans une prochaine version ; par consĂ©quent, vous souhaiterez peut-ĂȘtre ajouter ce paramĂštre Ă vos commandes de maniĂšre prĂ©ventive.
DATA_RETENTION_TIME_IN_DAYS = integer
SpĂ©cifie le nombre de jours pendant lesquels des actions Time Travel (CLONE et UNDROP) peuvent ĂȘtre effectuĂ©es sur la base de donnĂ©es, ainsi que la durĂ©e de conservation Time Travel par dĂ©faut de tous les schĂ©mas créés dans la base de donnĂ©es. Pour plus de dĂ©tails, voir ComprĂ©hension et utilisation de la fonction Time Travel.
Pour une description dĂ©taillĂ©e de ce paramĂštre de niveau objet, ainsi que plus dâinformations sur les paramĂštres dâobjet, voir ParamĂštres.
Valeurs :
Ădition Standard :
0
ou1
Ădition Enterprise :
0
Ă90
pour les bases de données permanentes0
ou1
pour les bases de données transitoires
Par défaut :
Ădition Standard :
1
Ădition Enterprise (ou supĂ©rieure) :
1
(sauf si une valeur par défaut différente a été spécifiée au niveau du compte)
Note
Une valeur de
0
désactive effectivement Time Travel pour la base de données.MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
ParamĂštre dâobjet qui spĂ©cifie le nombre maximum de jours pendant lesquels Snowflake peut prolonger la pĂ©riode de conservation des donnĂ©es pour les tables de la base de donnĂ©es, afin dâĂ©viter que les flux sur les tables ne deviennent obsolĂštes.
Pour une description détaillée de ce paramÚtre, voir MAX_DATA_EXTENSION_TIME_IN_DAYS.
EXTERNAL_VOLUME = external_volume_name
ParamĂštre dâobjet qui spĂ©cifie le volume externe par dĂ©faut Ă utiliser pour des Tables Apache Icebergâą.
Pour plus dâinformations sur ce paramĂštre, voir EXTERNAL_VOLUME.
CATALOG = catalog_integration_name
ParamĂštre dâobjet qui spĂ©cifie lâintĂ©gration de catalogue par dĂ©faut Ă utiliser pour des Tables Apache Icebergâą.
Pour plus dâinformations sur ce paramĂštre, voir CATALOG.
REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }
SpĂ©cifie sâil faut remplacer les caractĂšres UTF-8 non valides par le caractĂšre de remplacement Unicode (ïżœ) dans les rĂ©sultats de requĂȘte dâune table Iceberg. Vous ne pouvez dĂ©finir ce paramĂštre que pour les tables qui utilisent un catalogue Iceberg externe.
TRUE
remplace les caractĂšres UTF-8 non valides par le caractĂšre de remplacement Unicode.FALSE
laisse les caractĂšres UTF-8 non valides inchangĂ©s. Snowflake renvoie un message dâerreur utilisateur lorsquâil rencontre des caractĂšres UTF-8 non valides dans un fichier de donnĂ©es Parquet.
Par défaut :
FALSE
DEFAULT_DDL_COLLATION = 'collation_specification'
SpĂ©cifie une spĂ©cification de classement par dĂ©faut pour toutes les tables et tous les schĂ©mas ajoutĂ©s Ă la base de donnĂ©es. La valeur par dĂ©faut peut ĂȘtre remplacĂ©e au niveau du schĂ©ma et de la table individuelle.
Pour plus de détails sur le paramÚtre, voir DEFAULT_DDL_COLLATION.
LOG_LEVEL = 'log_level'
SpĂ©cifie le niveau de gravitĂ© des messages qui doivent ĂȘtre ingĂ©rĂ©s et mis Ă disposition dans la table des Ă©vĂ©nements actifs. Les messages du niveau spĂ©cifiĂ© (et des niveaux plus sĂ©vĂšres) sont ingĂ©rĂ©s.
Pour plus dâinformations sur les niveaux de journalisation, voir LOG_LEVEL. Pour plus dâinformations sur la dĂ©finition du niveau de journalisation, voir DĂ©finition des niveaux de journalisation, des mĂ©triques et du traçage.
TRACE_LEVEL = 'trace_level'
ContrÎle la maniÚre dont les événements de trace sont intégrés dans la table des événements.
Pour plus dâinformations sur les niveaux, voir TRACE_LEVEL. Pour plus dâinformations sur la dĂ©finition du niveau de trace, voir DĂ©finition des niveaux de journalisation, des mĂ©triques et du traçage.
STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }
Spécifie la politique de sérialisation du stockage des Tables Apache Iceberg⹠qui utilisent Snowflake comme catalogue.
COMPATIBLE
: Snowflake effectue lâencodage et la compression des fichiers de donnĂ©es, ce qui garantit lâinteropĂ©rabilitĂ© avec les moteurs de calcul tiers.OPTIMIZED
: Snowflake effectue lâencodage et la compression des fichiers de donnĂ©es, ce qui garantit des performances optimales de la part des tables au sein de Snowflake.
Par défaut :
OPTIMIZED
COMMENT = 'string_literal'
Spécifie un commentaire pour la base de données.
Par défaut : aucune valeur
CATALOG_SYNC = 'snowflake_open_catalog_integration_name'
SpĂ©cifie le nom dâune intĂ©gration de catalogue configurĂ©e pour Snowflake Open Catalog. Si spĂ©cifiĂ©, Snowflake synchronise les tables Apache Icebergâą gĂ©rĂ©es par Snowflake dans la base de donnĂ©es avec un catalogue externe dans votre compte Snowflake Open Catalog. Pour plus dâinformations sur la synchronisation des tables Iceberg gĂ©rĂ©es par Snowflake avec Open Catalog, voir Synchronisation dâune table gĂ©rĂ©e par Snowflake avec Snowflake Open Catalog.
Pour plus dâinformations sur ce paramĂštre, voir CATALOG_SYNC.
Par défaut : aucune valeur
CATALOG_SYNC_NAMESPACE_MODE = { NEST | FLATTEN }
SpĂ©cifie le mode dâespace de noms de synchronisation du catalogue pour les tables Iceberg gĂ©rĂ©es par Snowflake dans la base de donnĂ©es que vous synchronisez avec Snowflake Open Catalog. Cette propriĂ©tĂ© indique si Snowflake synchronise la table avec Open Catalog avec un ou deux espaces de noms parents. Elle ne sâapplique que si vous rĂ©glez le paramĂštre
CATALOG_SYNC
. Une fois la base de données créée, vous ne pouvez plus modifier cette propriété.NEST
: Snowflake synchronise deux espaces de noms parents avec la table.Par exemple, supposons que vous ayez une table Iceberg
db2.public.table1
enregistrée dans Snowflake. Vous souhaitez synchroniser cette table, ainsi que ses deux espaces de noms parents, avec le catalogue externecatalog2
dans Open Catalog. Pour synchroniser la table avec ses deux espaces de noms parents, utilisez la valeur par défaut pourCATALOG_SYNC_NAMESPACE_MODE
(NEST
). Si vous ne spécifiez pas la propriétéCATALOG_SYNC_NAMESPACE_MODE
, câest la valeur par dĂ©faut de cette propriĂ©tĂ© qui est appliquĂ©e, Ă savoirNEST
. Comme vous utilisez la valeur par défaut deCATALOG_SYNC_NAMESPACE_MODE
, vous nâavez pas besoin de spĂ©cifierCATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER
. En conséquence, Snowflake synchronise la table avec Open Catalog avec le nom entiÚrement qualifié suivant :catalog2.db2.public.table1
.FLATTEN
: Snowflake synchronise un espace de noms parent avec la table, qui contient le dĂ©limiteur que vous avez paramĂ©trĂ© Ă lâaide de la propriĂ©tĂ©CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER
.Important
Si votre moteur de requĂȘte tiers ne peut interroger que des tables situĂ©es jusquâau deuxiĂšme niveau dâespace de noms dâun catalogue, vous devez donner Ă la propriĂ©tĂ©
CATALOG_SYNC_NAMESPACE_MODE
la valeurFLATTEN
. Sinon, Snowflake synchronisera les tables Iceberg gĂ©rĂ©es par Snowflake au troisiĂšme niveau de lâespace de noms dans Open Catalog et vous ne pourrez pas effectuer de requĂȘte sur la table.Par exemple, supposons que vous ayez une table Iceberg
db1.public.table1
enregistrée dans Snowflake. Vous souhaitez synchroniser cette table et un espace de noms parent nommédb1-public
avec le catalogue externecatalog1
dans Open Catalog, afin que la table soit situĂ©e au deuxiĂšme niveau de lâespace de noms dans Open Catalog.Pour synchroniser la table avec lâespace de noms parent
db1-public
, définissezCATALOG_SYNC_NAMESPACE_MODE
surFLATTEN
et indiquez un trait dâunion (-
) comme valeur pourCATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER
. Par conséquent, Snowflake synchronise cette table avec Open Catalog sous le nom entiÚrement qualifié suivant :catalog1.db1-public.table1
.
Par défaut :
NEST
CATALOG_SYNC_NAMESPACE_FLATTEN_DELIMITER = 'string_literal'
SpĂ©cifie un dĂ©limiteur, que Snowflake insĂšre dans lâespace de noms aplati qui en rĂ©sulte lorsque Snowflake synchronise une table Iceberg gĂ©rĂ©e par Snowflake vers Snowflake Open Catalog avec un espace de noms parent. Ce dĂ©limiteur ne sâapplique que lorsque la propriĂ©tĂ© CATALOG_SYNC_NAMESPACE_MODE est dĂ©finie sur
FLATTEN
. Snowflake insĂšre ce dĂ©limiteur pour Ă©viter les conflits qui pourraient rĂ©sulter de lâaplatissement des espaces de noms parents pour diffĂ©rentes tables. Une fois la base de donnĂ©es créée, vous ne pouvez plus modifier cette propriĂ©tĂ©.Par exemple, supposons que vous souhaitiez synchroniser les tables Iceberg
customer.data.table1
etcustom.erdata.table1
gérées par Snowflake avec le catalogue externecatalog1
dans Open Catalog. En définissant la propriété CATALOG_SYNC_NAMESPACE_MODE surFLATTEN
et en spĂ©cifiant un trait dâunion (-
) comme délimiteur, Snowflake synchronise ces tables avec Open Catalog avec les noms entiÚrement qualifiés suivants :catalog1.customer-data.table1
catalog1.custom-erdata.table1
Si vous donnez à la propriété
CATALOG_SYNC_NAMESPACE_MODE
la valeurFLATTEN
, une valeur de délimiteur non vide est requise. Toutefois, si vous donnez à la propriétéCATALOG_SYNC_NAMESPACE_MODE
la valeurNEST
, cette propriĂ©tĂ© de dĂ©limiteur ne sâapplique pas et la valeur configurĂ©e est ignorĂ©e.CaractĂšres valides :
0-9
,A-Z
,a-z
,_
,$
,-
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Spécifie le nom de la balise et la valeur de la chaßne de la balise.
La valeur de la balise est toujours une chaĂźne de caractĂšres et le nombre maximum de caractĂšres pour la valeur de la balise est 256.
Pour plus dâinformations sur la spĂ©cification des balises dans une instruction, voir Quota de balise pour les objets.
WITH CONTACT ( purpose = contact [ , purpose = contact ...] )
Associez le nouvel objet Ă un ou plusieurs contacts.
Exigences en matiĂšre de contrĂŽle dâaccĂšs¶
Un rÎle utilisé pour exécuter cette opération doit au minimum disposer des privilÚges suivants :
PrivilĂšge |
Objet |
Remarques |
---|---|---|
CREATE DATABASE |
Compte |
Obligatoire pour la crĂ©ation dâune nouvelle base de donnĂ©es. Only the SYSADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
USAGE |
Volume externe, intégration du catalogue |
NĂ©cessaire pour dĂ©finir les paramĂštres dâobjet |
IMPORT LISTING |
Compte |
Requis pour crĂ©er une base de donnĂ©es Ă partir dâune annonce. |
IMPORT SHARE |
Compte |
CrĂ©er une base de donnĂ©es Ă partir dâun partage. |
MODIFY LOG LEVEL |
Compte |
Obligatoire pour définir le LOG_LEVEL pour une base de données. |
MODIFY TRACE LEVEL |
Compte |
Obligatoire pour définir le TRACE_LEVEL pour une base de données. |
OWNERSHIP |
Base de données |
Obligatoire uniquement lors de lâexĂ©cution dâune instruction CREATE OR ALTER DATABASE pour une base de donnĂ©es existante. OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
Pour obtenir des instructions sur la crĂ©ation dâun rĂŽle personnalisĂ© avec un ensemble spĂ©cifique de privilĂšges, voir CrĂ©ation de rĂŽles personnalisĂ©s.
Pour des informations gĂ©nĂ©rales sur les rĂŽles et les privilĂšges accordĂ©s pour effectuer des actions SQL sur des objets sĂ©curisables, voir Aperçu du contrĂŽle dâaccĂšs.
Notes gĂ©nĂ©rales sur lâutilisation¶
La crĂ©ation dâune base de donnĂ©es la dĂ©finit automatiquement comme la base de donnĂ©es active/courante pour la session en cours (Ă©quivalant Ă lâutilisation de la commande USE DATABASE pour la base de donnĂ©es).
Si une base de donnĂ©es portant le mĂȘme nom existe dĂ©jĂ , une erreur est renvoyĂ©e et la base de donnĂ©es nâest pas créée, sauf si le mot clĂ©
OR REPLACE
facultatif est spécifié dans la commande.Important
Utiliser
OR REPLACE
Ă©quivaut Ă utiliser DROP DATABASE sur la base de donnĂ©es existante et crĂ©er ensuite une nouvelle base de donnĂ©es avec le mĂȘme nom ; cependant, la base de donnĂ©es dĂ©truite nâest pas supprimĂ©e dĂ©finitivement du systĂšme. En revanche, elle est conservĂ©e dans Time Travel. Ceci est important, car les bases de donnĂ©es dĂ©truites dans Time Travel contribuent au stockage des donnĂ©es de votre compte. Pour plus dâinformations, voir CoĂ»ts de stockage pour Time Travel et Fail-safe.
Les clauses
OR REPLACE
etIF NOT EXISTS
sâexcluent mutuellement. Elles ne peuvent pas ĂȘtre utilisĂ©es dans la mĂȘme instruction.Les instructions CREATE OR REPLACE <objet> sont atomiques. En dâautres termes, lorsquâun objet est remplacĂ©, lâancien objet est supprimĂ© et le nouvel objet est créé dans une seule transaction.
La crĂ©ation dâune nouvelle base de donnĂ©es crĂ©e automatiquement deux schĂ©mas dans la base de donnĂ©es :
PUBLIC : schéma par défaut de la base de données.
INFORMATION_SCHEMA : schĂ©ma qui contient des vues et des fonctions de table qui peuvent ĂȘtre utilisĂ©es pour interroger les mĂ©tadonnĂ©es sur les objets de la base de donnĂ©es, ainsi que sur tous les objets du compte.
Les bases de données créées à partir de partages diffÚrent des bases de données standards de la façon suivante :
Elles ne possĂšdent pas les schĂ©mas PUBLIC ou INFORMATION_SCHEMA Ă moins que ces schĂ©mas nâaient Ă©tĂ© explicitement attribuĂ©s au partage.
Elles ne peuvent pas ĂȘtre clonĂ©es.
Les propriétés telles que
TRANSIENT
etDATA_RETENTION_TIME_IN_DAYS
ne sâappliquent pas.
Lorsquâune base de donnĂ©es est active/courante, le schĂ©ma PUBLIC est Ă©galement actif/courant par dĂ©faut sauf si un schĂ©ma diffĂ©rent est utilisĂ© ou si le schĂ©ma PUBLIC a Ă©tĂ© dĂ©truit.
Concernant les métadonnées :
Attention
Les clients doivent sâassurer quâaucune donnĂ©e personnelle (autre que pour un objet utilisateur), donnĂ©e sensible, donnĂ©e Ă exportation contrĂŽlĂ©e ou autre donnĂ©e rĂ©glementĂ©e nâest saisie comme mĂ©tadonnĂ©e lors de lâutilisation du service Snowflake. Pour plus dâinformations, voir Champs de mĂ©tadonnĂ©es dans Snowflake.
Notes sur lâutilisation de CREATE OR ALTER DATABASE¶
Toutes les limitations de la commande ALTER DATABASE sâappliquent.
Cette commande prend en charge les propriĂ©tĂ©s et la syntaxe qui se chevauchent entre les commandes CREATE DATABASE et ALTER DATABASE. Câest pourquoi les Ă©lĂ©ments suivants ne sont pas pris en charge :
Permutation des bases de donnĂ©es Ă lâaide du paramĂštre SWAP WITH.
Renommer une base de donnĂ©es Ă lâaide du paramĂštre RENAME TO.
CrĂ©ation dâun clone dâune base de donnĂ©es Ă lâaide du paramĂštre CLONE.
Ajout ou modification de balises et de politiques. Toutes les balises et politiques existantes sont conservées.
Conversion dâune base de donnĂ©es TRANSIENT en une base de donnĂ©es nonTRANSIENT, et inversement.
CrĂ©ation dâune base de donnĂ©es Ă partir dâun partage Ă lâaide de CREATE OR ALTER DATABASE ⊠FROM SHARE.
CrĂ©ation dâune base de donnĂ©es secondaire (rĂ©plique) Ă lâaide de CREATE OR ALTER DATABASE ⊠AS REPLICA OF.
Notes sur lâutilisation de la rĂ©plication de base de donnĂ©es¶
Important
Cette section dĂ©crit une fonction de rĂ©plication de base de donnĂ©es limitĂ©e qui est diffĂ©rente de la fonction de rĂ©plication de compte. Snowflake recommande vivement dâutiliser la fonction de rĂ©plication de compte pour rĂ©pliquer et basculer les bases de donnĂ©es.
La rĂ©plication de base de donnĂ©es utilise des ressources de calcul fournies par Snowflake au lieu de votre propre entrepĂŽt virtuel pour copier des objets et des donnĂ©es. Cependant, le paramĂštre de session/objet STATEMENT_TIMEOUT_IN_SECONDS contrĂŽle toujours le temps dâexĂ©cution dâune instruction avant son annulation. La valeur par dĂ©faut est de
172800
(2 jours). Ătant donnĂ© que la rĂ©plication initiale dâune base de donnĂ©es principale peut durer plus de deux jours (en fonction de la quantitĂ© de mĂ©tadonnĂ©es dans la base de donnĂ©es ainsi que de la quantitĂ© de donnĂ©es dans les objets de base de donnĂ©es), nous vous recommandons dâaugmenter la valeur STATEMENT_TIMEOUT_IN_SECONDS et de la dĂ©finir sur604800
(sept jours, la valeur maximale) pour la session dans laquelle vous exĂ©cutez lâopĂ©ration de rĂ©plication.ExĂ©cutez lâinstruction ALTER SESSION suivante avant lâexĂ©cution de lâinstruction
ALTER DATABASE secondary_db_name REFRESH
dans la mĂȘme session :ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = 604800;
Notez que le paramĂštre STATEMENT_TIMEOUT_IN_SECONDS sâapplique Ă©galement Ă lâentrepĂŽt actif dans une session. Le paramĂštre respecte la valeur infĂ©rieure dĂ©finie au niveau de la session ou de lâentrepĂŽt. Si vous avez un entrepĂŽt actif dans la session en cours, dĂ©finissez Ă©galement STATEMENT_TIMEOUT_IN_SECONDS sur
604800
pour cet entrepĂŽt (avec ALTER WAREHOUSE).Par exemple :
-- determine the active warehouse in the current session (if any) SELECT CURRENT_WAREHOUSE(); +---------------------+ | CURRENT_WAREHOUSE() | |---------------------| | MY_WH | +---------------------+ -- change the STATEMENT_TIMEOUT_IN_SECONDS value for the active warehouse ALTER WAREHOUSE my_wh SET STATEMENT_TIMEOUT_IN_SECONDS = 604800;
vous pouvez rĂ©initialiser la valeur du paramĂštre Ă la valeur par dĂ©faut une fois lâopĂ©ration de rĂ©plication terminĂ©e :
ALTER WAREHOUSE my_wh UNSET STATEMENT_TIMEOUT_IN_SECONDS;
La mĂ©thode prĂ©fĂ©rĂ©e pour identifier le compte qui stocke la base de donnĂ©es principale utilise le nom de lâorganisation et le nom du compte comme identificateur du compte. Si vous dĂ©cidez dâutiliser le localisateur de compte hĂ©ritĂ© Ă la place, voir Identificateurs de comptes pour la rĂ©plication et le basculement.
La commande CREATE DATABASE ⊠AS REPLICA ne prend pas en charge la clause WITH TAG.
Cette clause nâest pas prise en charge, car la base de donnĂ©es secondaire est en lecture seule. Si votre base de donnĂ©es principale spĂ©cifie la clause WITH TAG, supprimez la clause avant de crĂ©er la base de donnĂ©es secondaire. Pour vĂ©rifier si votre base de donnĂ©es possĂšde la clause WITH TAG, appelez la fonction GET_DDL dans votre compte Snowflake et spĂ©cifiez la base de donnĂ©es principale dans lâargument de la fonction. Si une balise est dĂ©finie dans la base de donnĂ©es, la sortie de la fonction comprendra une instruction ALTER DATABASE⊠SET TAG.
Pour plus dâinformations, voir RĂ©plication et balises.
Exemples¶
Créer deux bases de données permanentes, dont une avec une période de conservation des données de 10 jours :
CREATE DATABASE mytestdb;
CREATE DATABASE mytestdb2 DATA_RETENTION_TIME_IN_DAYS = 10;
SHOW DATABASES LIKE 'my%';
+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
| created_on | name | is_default | is_current | origin | owner | comment | options | retention_time |
|---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB | N | N | | PUBLIC | | | 1 |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2 | N | N | | PUBLIC | | | 10 |
+---------------------------------+------------+------------+------------+--------+----------+---------+---------+----------------+
Créer une base de données transitoire :
CREATE TRANSIENT DATABASE mytransientdb;
SHOW DATABASES LIKE 'my%';
+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
| created_on | name | is_default | is_current | origin | owner | comment | options | retention_time |
|---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------|
| Tue, 17 Mar 2016 16:57:04 -0700 | MYTESTDB | N | N | | PUBLIC | | | 1 |
| Tue, 17 Mar 2016 17:06:32 -0700 | MYTESTDB2 | N | N | | PUBLIC | | | 10 |
| Tue, 17 Mar 2015 17:07:51 -0700 | MYTRANSIENTDB | N | N | | PUBLIC | | TRANSIENT | 1 |
+---------------------------------+---------------+------------+------------+--------+----------+---------+-----------+----------------+
CrĂ©er une base de donnĂ©es Ă partir dâun partage fourni par un compte ab67890
:
CREATE DATABASE snow_sales FROM SHARE ab67890.sales_s;
Pour des exemples plus dĂ©taillĂ©s de crĂ©ation dâune base de donnĂ©es Ă partir dâun partage, voir Consommer des donnĂ©es importĂ©es.
Exemples de réplication de base de données¶
Important
Cette section dĂ©crit une fonction de rĂ©plication de base de donnĂ©es limitĂ©e qui est diffĂ©rente de la fonction de rĂ©plication de compte. Snowflake recommande vivement dâutiliser la fonction de rĂ©plication de compte pour rĂ©pliquer et basculer les bases de donnĂ©es.
Pour un exemple de crĂ©ation dâun groupe de rĂ©plication pour rĂ©pliquer une seule base de donnĂ©es dans un compte cible, voir RĂ©pliquer une seule base de donnĂ©es.
Exemples CREATE OR ALTER DATABASE¶
Créer une base de données simple¶
Créer une base de données nommée db1
:
CREATE OR ALTER DATABASE db1;
Modifier la base de données db1
pour définir les paramÚtres DATA_RETENTION_TIME_IN_DAYS et DEFAULT_DDL_COLLATION :
CREATE OR ALTER DATABASE db1
DATA_RETENTION_TIME_IN_DAYS = 5
DEFAULT_DDL_COLLATION = 'de';
Annuler la dĂ©finition dâun paramĂštre prĂ©cĂ©demment dĂ©fini sur la base de donnĂ©es¶
Lâabsence dâun paramĂštre prĂ©cĂ©demment dĂ©fini dans la dĂ©finition modifiĂ©e de la base de donnĂ©es entraĂźne lâannulation de sa dĂ©finition. Dans lâexemple suivant, annulez la dĂ©finition du paramĂštre DATA_RETENTION_TIME_IN_DAYS pour la base de donnĂ©es db1
créée dans lâexemple prĂ©cĂ©dent :
CREATE OR ALTER DATABASE db1
DEFAULT_DDL_COLLATION = 'de';
Interfaces alternatives¶
Snowflake REST APIs
Snowflake Python APIs
Méthode database.DatabaseCollection.create
Snowflake CLI
Commande snow object create