Loading...

How to copy all Azure Storage Tables data between two different Storage Accounts with Python

How to copy all Azure Storage Tables data between two different Storage Accounts with Python

Background

This article describes how to copy all Azure Storage Tables data between two different storage accounts.

 

For this, we will use Azure Storage SDK for Python to copy all tables (and the respective data) from one Azure Storage Table to another Azure Storage Table. This approach will keep the data in the source tables, and will create new tables with the respective data in the destination Azure Storage Table.

 

This script was developed and tested using the following versions but it is expected to work with previous versions:

  • Python 3.11.7
  • azure-data-tables (version: 12.5.0)
  • azure-core (version: 1.30.1)

 

Approach

 

In this section, you can find a sample code to copy all tables data between two Storage Accounts using the Azure Storage SDK for Python.

 

This Python sample code is based on Azure Storage SDK for Python. Please review our documentation here Azure Tables client library for Python | Microsoft Learn

 

Prerequisites

 

Download or use any Python IDE of your choice.

  • On Python side, we will use the following packages:
    • azure-data-tables (more information here azure-data-tables · PyPI). To install, please run:
      pip install azure-data-tables
    • azure-core (more information here azure-core · PyPI). To install, please run:
      pip install azure-core

 

Please see below the sample code to copy all the tables data between two Azure Storage Accounts using the storage connection string.

 

Special note: Only tables that do not exist with the same name in the destination Storage Account will be copied.

 

 

from azure.data.tables import TableServiceClient from azure.core.exceptions import ResourceExistsError source_connection_string = "X" destination_connection_string = "X" # Create a TableServiceClient for both source and destination accounts source_table_service = TableServiceClient.from_connection_string(conn_str=source_connection_string) destination_table_service = TableServiceClient.from_connection_string(conn_str=destination_connection_string) for table in source_table_service.list_tables(): source_table_client = source_table_service.get_table_client(table_name=table.name) destination_table_client = destination_table_service.get_table_client(table_name=table.name) try: # Create destination table if it does not exist destination_table_client.create_table() # Fetch entities from the source table entities = source_table_client.list_entities() # Insert entities into the destination table for entity in entities: destination_table_client.create_entity(entity=entity) print(f"Table '{table.name}' copied") except ResourceExistsError: print(f"Table '{table.name}' already exists.")

 

 

After executing this sample code, it is expected that you will find all the tables from the source Storage Account in the destination Storage Account, as well as the data from those tables.

 

Disclaimer:

  • These steps are provided for the purpose of illustration only. 
  • These steps and any related information are provided "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
  • We grant You a nonexclusive, royalty-free right to use and modify the Steps and to reproduce and distribute the steps, provided that. You agree:
    • to not use Our name, logo, or trademarks to market Your software product in which the steps are embedded;
    • to include a valid copyright notice on Your software product in which the steps are embedded; and
    • to indemnify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits, including attorneys’ fees, that arise or result from the use or distribution of steps.

Published on:

Learn more
Azure PaaS Blog articles
Azure PaaS Blog articles

Azure PaaS Blog articles

Share post:

Related posts

Introducing langchain-azure-cosmosdb: Build Agentic Apps and RAG with One Database

Build AI Agents and RAG Applications with the New LangChain + LangGraph Connector for Azure Cosmos DB Building AI agents and RAG applications ...

1 day ago

Azure Developer CLI (azd) – April 2026

The Azure Developer CLI (azd) shipped five releases in April 2026. The biggest theme this month is multi-language hook support: write azd hook...

1 day ago

Dynamics 365 Supply Chain Management – Run Planning Optimization on Azure operated by 21Vianet

We are announcing the ability for companies in China running Dynamics 365 Supply Chain Management on Azure operated by 21Vianet to run Plannin...

1 day ago

Announcing the Private Preview of Cosmos DB Azure RBAC Integration

Introduction Managing access to Azure resources often means dealing with two separate permission models: one for management operations and ano...

3 days ago

Azure DocumentDB (with MongoDB compatibility) for Banking: A Modern Customer 360 Approach

Introduction: Transforming Customer Intelligence in Banking Every day, people interact with their bank across mobile apps, branches, call cent...

3 days ago

Exam AI-901: Microsoft Azure AI Fundamentals

With a massive amount of focus on AI across the Microsoft platform, I decided to sit the new AI-901 exam, which is the new Azure fundamentals ...

4 days ago

The problem: All-or-nothing batch processing in Azure Service Bus

Azure Functions lets you settle each Service Bus message on its own within a batch. Complete, abandon, dead-letter, or defer messages one by o...

4 days ago

Welcome to Azure Cosmos DB Conf 2026

Today is the day. Azure Cosmos DB Conf 2026, in partnership with AMD, is a free virtual developer event focused on building modern, scalable a...

4 days ago
Stay up to date with latest Microsoft Dynamics 365 and Power Platform news!
* Yes, I agree to the privacy policy