Écriture base de données
Écrit le flux d'entrée dans n'importe quelle base de données. Le type de
SGBD (db_type) est choisi sur la brick ; la connexion porte les
identifiants. Cette brick unifiée remplace les anciennes bricks PostgreSQL /
MySQL / SQL Server / Oracle / SQLite / Snowflake Export.
La brick consomme l'entrée in et n'a pas de port de sortie. Elle nécessite
une connexion base de données du projet, voir
Créer une connexion.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
db_type | Enum | Oui | postgres, mysql, snowflake, mssql, oracle, sqlite, bigquery, redshift, databricks. |
connection_id | String | Oui | Connexion base de données utilisée. |
schema_name | String | Non | Schéma cible. |
table_name | String | Oui | Table cible. |
write_mode | Enum | Oui | append (défaut), replace ou upsert. |
create_if_missing | Boolean | Non | Crée la table si elle n'existe pas (défaut true). |
batch_size | Integer | Non | Taille des lots d'écriture (défaut 1 000). |
primary_key_columns | Array | Oui (upsert) | Colonnes clés servant à détecter les lignes existantes. |
Modes d'écriture
| Mode | Comportement |
|---|---|
append | Ajoute les lignes à la fin de la table. |
replace | Recrée la table à partir du DataFrame (drop + create) puis insère. |
upsert | Insère les nouvelles lignes et met à jour les existantes, sur la base de primary_key_columns. |
L'écriture se fait par lots (batch_size). En modes append / replace,
PostgreSQL et MySQL utilisent des INSERT multi-lignes pour de meilleures
performances.
Détail de l'upsert par dialecte
| Base | Mécanisme |
|---|---|
| PostgreSQL, SQLite | INSERT … ON CONFLICT … DO UPDATE |
| MySQL | INSERT … ON DUPLICATE KEY UPDATE |
| Snowflake | MERGE INTO … WHEN MATCHED / WHEN NOT MATCHED |
Le mode upsert n'est pas disponible pour SQL Server, Oracle, BigQuery,
Redshift et Databricks SQL : la brick échoue explicitement. Utilisez append avec une clé de déduplication en
amont, ou une brick
Exécuter SQL.
En mode upsert avec create_if_missing, la table est créée vide (structure
du DataFrame) avant le premier lot si elle n'existe pas. Les colonnes de
primary_key_columns doivent exister dans le flux d'entrée, sans quoi la
brick échoue avant toute écriture.
Bases supportées
Les paramètres de brick sont identiques quelle que soit la base ; la connexion porte les spécificités, voir Types de connexions.
- PostgreSQL : port 5432,
ssl_modeoptionnel ; - MySQL : port 3306, charset
utf8mb4; - SQL Server (MSSQL) : port 1433, pilote ODBC, chiffrement activé par défaut ;
- Oracle : port 1521, connexion par
service_name; - SQLite : chemin de fichier local au runner ;
- Snowflake :
account,warehouse,schema(défautPUBLIC),roleoptionnel ; - BigQuery, Redshift, Databricks SQL : également disponibles dans
db_type.
La connexion étant définie au projet avec des valeurs par environnement,
le même pipeline écrit dans la base de dev en dev et dans la base de
production en prod, sans modification. Voir
Environnements et déploiement.