Cassandra fournit des outils d'exportation / importation comme les autres SGBDR:
- cqlsh 命令 COPIER VERS / DEPUIS
Notez qu'il ne s'agit pas d'une commande cql. Utilisez cet ensemble de commandes pour migrer des données entre cassandra et d'autres SGBDR ou cassandra. COPY TO / FROM prend en charge le format de fichier CSV et la sortie et l'entrée standard.
La commande COPY TO / FROM prend également en charge les types de données agrégées. - sstable2json / json2sstable
Cet ensemble d'outils est obsolète et a été supprimé dans la version 3.0. Ce groupe d'outils ne doit donc pas être réutilisé.
- sstableloader
Le chargeur en vrac Cassandra peut charger des données externes sur cassandra, il peut également restaurer un instantané, charger sstable sur un cluster cassandra avec différentes configurations.
Si la quantité de données est importante, sstableloader doit être utilisé. Si la quantité de données est relativement petite, COPY TO / FROM est plus rapide et plus économique. - Instantanés
Les instantanés sont un véritable outil de sauvegarde et de récupération de Cassandra, pas un outil de migration de données avec d'autres systèmes de base de données. Donc, à strictement parler, il ne doit pas être considéré comme un outil d'exportation / importation.
- Outils ETL
De nombreux outils ETL (Extract-Transform-Load) tiers prennent en charge la migration des données d'autres bases de données vers la base de données cassandra.
COPIER VERS / DEPUIS
Ici, ne parlez que de la commande COPY TO / FROM.
Format de commande:
1 2 3 4 5 6 7 |
|
COPY FROM est utilisé pour importer des données depuis un fichier csv ou une entrée standard vers une table, tandis que COPY TO est utilisé pour exporter des données de table vers un fichier csv ou une sortie standard.
WITH option = 'value' est utilisé pour spécifier le format, le délimiteur, la citation, le caractère de transfert, l'encodage du fichier, le format de l'heure, etc. du fichier csv, voir la documentation officielle pour plus de détails.
Si vous ne spécifiez pas de nom de colonne, toutes les colonnes seront sorties dans l'ordre indiqué dans les métadonnées du tableau. De même, si le csv organise également les données dans le même ordre, tous les noms de colonnes peuvent être ignorés pendant COPY FROM.
Dans COPY TO / FROM, vous pouvez spécifier uniquement certaines colonnes pour exporter et importer certaines données, et vous pouvez spécifier les noms des colonnes dans n'importe quel ordre.
Si les données existent déjà dans la table, COPY FROM ne tronquera pas les données existantes.
Exemples de données exportées:
1 2 |
|
Exemple de données importées:
1 |
|
Si vous utilisez une entrée standard pour importer des données, utilisez \.
une seule ligne contenant uniquement des caractères pour terminer la saisie de données.
Si le message d'erreur suivant s'affiche lors de l'importation de données:
1 2 3 4 |
|
En effet, le fichier csv contient des champs de grande capacité et le module cython python doit définir une limite de taille de champ plus importante.
Modifiez le fichier /usr/bin/cqlsh.py, après avoir importé le module csv, ajoutez la ligne suivante:
1 |
|
Remarque: les tables avec des colonnes de compteur ne peuvent pas utiliser COPY TO / FROM pour exporter et importer des données.
Références:
[1] Façons de déplacer des données vers / depuis DataStax Enterprise et Cassandra
[2] Envisagez de déprécier sstable2json / json2sstable dans 2.2
[3] _csv.Error: champ plus grand que la limite de champ (131072)
[4] cassandra 数据 迁移