Données d'exportation et d'importation de Cassandra

 

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 table_name ( column, ...)

FROM ( 'file_name' | STDIN )

WITH option = 'value' AND ...

 

COPY table_name ( column , ... )

TO ( 'file_name' | STDOUT )

WITH option = 'value' AND ...

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

cqlsh> use test ;

cqlsh> COPY airplanes (name, mach, year, manufacturer) TO 'export.csv' ;

Exemple de données importées:

1

cqlsh> COPY airplanes (name, mach, year, manufacturer) FROM 'import.csv' ;

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

Error starting import process:

 

field larger than field limit (131072)

%d format: a number is required, not NoneType

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

csv.field_size_limit(sys.maxsize)

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 数据 迁移

Publié 19 articles originaux · loué 4 · 170 000 vues +

Je suppose que tu aimes

Origine blog.csdn.net/u011250186/article/details/105635320
conseillé
Classement