2017-10-09 3 views
0

Existe-t-il un moyen de copier une table de date-sharded à un autre ensemble de données via l'utilitaire bq?Manière efficace de copier la table date-sharded dans BigQuery via l'utilitaire bq de ligne de commande?

Ma solution actuelle génère un script bash pour copier chaque jour un par un et diviser le travail, mais plus efficace serait de tout faire en parallèle:

#!/bin/sh 
bq cp old_dataset.table_20140101 new_dataset_20140101 
.. 
bq cp old_dataset.table_20171001 new_dataset_20171001 
+0

Pouvez-vous partager votre script bash? Je suis confus par _ "copie chaque jour un par un et fractionnement du travail" _. –

+0

J'ai ajouté le script, que j'ai généré automatiquement à partir de la ligne de commande via vim. La liste peut être divisée en plusieurs scripts 'n', où' n' est la quantité de parallélisme, mais c'est très fastidieux. – Tobi

Répondre

0

Vous pouvez spécifier les tables de sources multiples mais seulement une seule table de destination (référez-vous à this question), ainsi ceci peut ne pas fonctionner pour vous. Toutefois, si vos données sont partitionnées (au lieu de partitionnées), vous pouvez copier la table en une seule commande.

Je vous recommande convert the sharded table into a date-partitioned table qui copiera efficacement toutes les tables partagées dans une nouvelle table. Vous pouvez le faire avec la commande suivante:

bq partition old_dataset.table_ new_dataset.partitioned 
+0

Merci, mais j'ai besoin de garder l'ancienne structure car il s'agit d'une sauvegarde qui correspond à d'anciens scripts et logiciels qui l'abordent de manière démodée. (Je migre vers des tables partitionnées quotidiennement et effectue ainsi cette sauvegarde.) – Tobi