> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Permet à ClickHouse de se connecter à des bases de données externes via JDBC.

# Moteur de table JDBC

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<Note>
  clickhouse-jdbc-bridge contient du code expérimental et n’est plus pris en charge. Il peut présenter des problèmes de fiabilité et des vulnérabilités de sécurité. Vous l’utilisez à vos propres risques.
  ClickHouse recommande d’utiliser les fonctions de table intégrées à ClickHouse, qui constituent une meilleure alternative pour les requêtes ad hoc (Postgres, MySQL, MongoDB, etc.).
</Note>

Permet à ClickHouse de se connecter à des bases de données externes via [JDBC](https://en.wikipedia.org/wiki/Java_Database_Connectivity).

Pour établir la connexion JDBC, ClickHouse utilise le programme séparé [clickhouse-jdbc-bridge](https://github.com/ClickHouse/clickhouse-jdbc-bridge), qui doit s’exécuter en tant que démon.

Ce moteur prend en charge le type de données [Nullable](/fr/reference/data-types/nullable).

<div id="creating-a-table">
  ## Créer une table
</div>

```sql theme={null}
CREATE TABLE [IF NOT EXISTS] [db.]table_name
(
    columns list...
)
ENGINE = JDBC(datasource, external_database, external_table)
```

**Paramètres du moteur**

* `datasource` — URI ou nom d’un SGBD externe.

  Format d’URI : `jdbc:<driver_name>://<host_name>:<port>/?user=<username>&password=<password>`.
  Exemple pour MySQL : `jdbc:mysql://localhost:3306/?user=root&password=root`.

* `external_database` — Nom d’une base de données dans un SGBD externe ou, à la place, schéma de table défini explicitement (voir les exemples).

* `external_table` — Nom de la table dans une base de données externe ou requête `select`, par exemple `select * from table1 where column1=1`.

* Ces paramètres peuvent également être transmis à l’aide de [collections nommées](/fr/concepts/features/configuration/server-config/named-collections).

<div id="usage-example">
  ## Exemple d'utilisation
</div>

Création d'une table sur le serveur MySQL en s'y connectant directement via son client en ligne de commande :

```text theme={null}
mysql> CREATE TABLE `test`.`test` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `int_nullable` INT NULL DEFAULT NULL,
    ->   `float` FLOAT NOT NULL,
    ->   `float_nullable` FLOAT NULL DEFAULT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into test (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from test;
+------+----------+-----+----------+
| int_id | int_nullable | float | float_nullable |
+------+----------+-----+----------+
|      1 |         NULL |     2 |           NULL |
+------+----------+-----+----------+
1 row in set (0,00 sec)
```

Création d’une table dans ClickHouse server et sélection de données depuis cette table :

```sql theme={null}
CREATE TABLE jdbc_table
(
    `int_id` Int32,
    `int_nullable` Nullable(Int32),
    `float` Float32,
    `float_nullable` Nullable(Float32)
)
ENGINE JDBC('jdbc:mysql://localhost:3306/?user=root&password=root', 'test', 'test')
```

```sql theme={null}
SELECT *
FROM jdbc_table
```

```text theme={null}
┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
│      1 │         ᴺᵁᴸᴸ │     2 │           ᴺᵁᴸᴸ │
└────────┴──────────────┴───────┴────────────────┘
```

```sql theme={null}
INSERT INTO jdbc_table(`int_id`, `float`)
SELECT toInt32(number), toFloat32(number * 1.0)
FROM system.numbers
```

<div id="see-also">
  ## Voir aussi
</div>

* [fonction de table JDBC](/fr/reference/functions/table-functions/jdbc).
