> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrer vers ClickHouse avec clickhouse-local

> Guide expliquant comment migrer vers ClickHouse avec clickhouse-local

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-01.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=2901f6230caf3638502a3ca4835ae0ac" size="lg" alt="Migration de ClickHouse autogéré" width="2048" height="1208" data-path="images/integrations/migration/ch-local-01.webp" />

Vous pouvez utiliser ClickHouse, ou plus précisément [`clickhouse-local`](/docs/fr/concepts/features/tools-and-utilities/clickhouse-local),
comme outil ETL pour migrer des données de votre système de base de données actuel vers ClickHouse Cloud, à condition que ce système dispose soit d’un [moteur de table d’intégration](/docs/fr/reference/engines/table-engines/index#integration-engines) ou d’une [fonction de table](/docs/fr/reference/functions/table-functions/index) fournis par ClickHouse,
soit d’un JDBC driver ou d’un ODBC driver fourni par l’éditeur.

Nous appelons parfois cette méthode de migration une méthode "pivot", car elle utilise un point de passage intermédiaire pour déplacer les données de la base de données source vers la base de données de destination. Par exemple, cette méthode peut être nécessaire si, pour des raisons de sécurité, seules les connexions sortantes sont autorisées depuis un réseau privé ou interne. Dans ce cas, vous devez extraire les données de la base de données source avec clickhouse-local, puis les envoyer vers une base de données ClickHouse de destination, clickhouse-local servant alors de point de pivot.

ClickHouse fournit des moteurs de table d’intégration et des fonctions de table (qui créent des moteurs de table d’intégration à la volée) pour [MySQL](/docs/fr/reference/engines/table-engines/integrations/mysql), [PostgreSQL](/docs/fr/reference/engines/table-engines/integrations/postgresql), [MongoDB](/docs/fr/reference/engines/table-engines/integrations/mongodb) et [SQLite](/docs/fr/reference/engines/table-engines/integrations/sqlite).
Pour tous les autres systèmes de base de données courants, un JDBC driver ou un ODBC driver est disponible auprès de l’éditeur du système.

<div id="what-is-clickhouse-local">
  ## Qu’est-ce que clickhouse-local ?
</div>

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-02.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=a9897ab67501ac2c5311d35234bb6a3c" size="lg" alt="Migration de ClickHouse autogéré" width="2048" height="1160" data-path="images/integrations/migration/ch-local-02.webp" />

En règle générale, ClickHouse s’exécute sous forme de cluster, où plusieurs instances du moteur de base de données ClickHouse fonctionnent de manière distribuée sur différents serveurs.

Sur un serveur unique, le moteur de base de données ClickHouse s’exécute dans le cadre du programme `clickhouse-server`. L’accès à la base de données (chemins, utilisateurs, sécurité, ...) est configuré à l’aide d’un fichier de configuration du serveur.

L’outil `clickhouse-local` vous permet d’utiliser le moteur de base de données ClickHouse de manière isolée, sous la forme d’un utilitaire en ligne de commande, pour un traitement SQL ultrarapide des données sur un grand nombre d’entrées et de sorties, sans avoir à configurer ni à démarrer un serveur ClickHouse.

<div id="installing-clickhouse-local">
  ## Installation de clickhouse-local
</div>

Vous avez besoin d'une machine hôte pour `clickhouse-local` disposant d'un accès réseau à la fois à votre système de base de données source actuel et à votre service cible ClickHouse Cloud.

Sur cette machine hôte, téléchargez la version appropriée de `clickhouse-local` en fonction du système d'exploitation de votre ordinateur :

<Tabs>
  <Tab title="Linux">
    1. La manière la plus simple de télécharger `clickhouse-local` localement consiste à exécuter la commande suivante :

    ```bash theme={null}
    curl https://clickhouse.com/ | sh
    ```

    1. Exécutez `clickhouse-local` (cela affichera simplement sa version) :

    ```bash theme={null}
    ./clickhouse-local
    ```
  </Tab>

  <Tab title="macOS">
    1. La manière la plus simple de télécharger `clickhouse-local` localement consiste à exécuter la commande suivante :

    ```bash theme={null}
    curl https://clickhouse.com/ | sh
    ```

    1. Exécutez `clickhouse-local` (cela affichera simplement sa version) :

    ```bash theme={null}
    ./clickhouse local
    ```
  </Tab>
</Tabs>

<Info>
  **Important**

  Les exemples de ce guide utilisent les commandes Linux pour exécuter `clickhouse-local` (`./clickhouse-local`).
  Pour exécuter `clickhouse-local` sur Mac, utilisez `./clickhouse local`.
</Info>

<Tip>
  **Ajoutez le système distant à l'IP Access List de votre service ClickHouse Cloud**

  Pour que la fonction `remoteSecure` puisse se connecter à votre service ClickHouse Cloud, l'adresse IP du système distant doit être autorisée dans l'IP Access List. Développez **Manage your IP Access List** sous cette astuce pour plus d'informations.
</Tip>

<Accordion title="Gérer votre IP Access List">
  Dans la liste de vos services ClickHouse Cloud, choisissez le service avec lequel vous allez travailler, puis ouvrez **Settings**. Si l’IP Access List ne contient pas l’adresse IP ou la plage d’adresses du système distant qui doit se connecter à votre service ClickHouse Cloud, vous pouvez résoudre le problème avec **Add IPs** :

  <div className="ch-image-md">
    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/ip-allow-list-check-list.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=14fc8b7b7a3e42ebdd45507e630d4702" alt="Vérifiez si le service autorise le trafic provenant de votre adresse IP dans l’IP Access List" width="3840" height="2042" data-path="images/_snippets/ip-allow-list-check-list.webp" />
    </Frame>
  </div>

  Ajoutez l’adresse IP individuelle ou la plage d’adresses devant se connecter à votre service ClickHouse Cloud. Modifiez le formulaire selon vos besoins, puis cliquez sur **Save**.

  <div className="ch-image-md">
    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/ip-allow-list-add-current-ip.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=cab1bb3c9ae950e59acdb2cd5daeaea4" alt="Ajoutez votre adresse IP actuelle à l’IP Access List dans ClickHouse Cloud" width="1188" height="796" data-path="images/_snippets/ip-allow-list-add-current-ip.webp" />
    </Frame>
  </div>
</Accordion>

<div id="example-1-migrating-from-mysql-to-clickhouse-cloud-with-an-integration-engine">
  ## Exemple : migration de MySQL vers ClickHouse Cloud avec un moteur de table d’intégration
</div>

Nous utiliserons le [moteur de table d’intégration](/docs/fr/reference/engines/table-engines/integrations/mysql) (créé à la volée par la [fonction de table mysql](/docs/fr/reference/functions/table-functions/mysql)) pour lire les données de la base de données MySQL source, et nous utiliserons la [fonction de table remoteSecure](/docs/fr/reference/functions/table-functions/remote)
pour écrire les données dans une table de destination sur votre service ClickHouse Cloud.

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-03.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=c4a36de8d8f1c27b2a3ebbec453ef9b3" size="lg" alt="Migration de ClickHouse autogéré" width="2048" height="1160" data-path="images/integrations/migration/ch-local-03.webp" />

<div id="on-the-destination-clickhouse-cloud-service">
  ### Dans le service ClickHouse Cloud de destination :
</div>

<div id="create-the-destination-database">
  #### Créez la base de données de destination :
</div>

```sql theme={null}
  CREATE DATABASE db
```

<div id="create-a-destination-table-that-has-a-schema-equivalent-to-the-mysql-table">
  #### Créez une table de destination avec un schéma équivalent à celui de la table MySQL :
</div>

```sql theme={null}
  CREATE TABLE db.table ...
```

<Note>
  Le schéma de la table de destination ClickHouse Cloud et celui de la table source MySQL doivent correspondre (les noms et l’ordre des colonnes doivent être identiques, et les types de données des colonnes doivent être compatibles).
</Note>

<div id="on-the-clickhouse-local-host-machine">
  ### Sur la machine hôte de clickhouse-local :
</div>

<div id="run-clickhouse-local-with-the-migration-query">
  #### Lancez clickhouse-local avec la requête de migration :
</div>

```sql theme={null}
  ./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
```

<Note>
  Aucune donnée n’est stockée localement sur la machine hôte `clickhouse-local`. Les données sont plutôt lues depuis la table source MySQL,
  puis immédiatement écrites dans la table de destination du service ClickHouse Cloud.
</Note>
