目前attu不支持一次性导出所有数据。可以采用脚本daochujson,然后再通过attu导入。

import json
from pymilvus import connections, utility, Collection


def export_milvus_data(export_dir='./milvus_data', uri="", user="", password="", db_name="", collection_name="", output_fields=[]):
    try:
        connections.connect(uri=uri, user=user, password=password, timeout=10, db_name=db_name)
        print(f"Connected to Milvus")

        import os
        os.makedirs(export_dir, exist_ok=True)

        collection = Collection(collection_name)

        iterator = collection.query_iterator(
            batch_size=5000,
            expr="",
            output_fields=output_fields,
        )
        # 计数器用于生成唯一文件名
        file_count = 0
        total = 0
        while True:
            result = iterator.next()
            if not result:
                iterator.close()
                break

            # 将当前批次的结果保存到JSON文件
            filename = f"{export_dir}/{db_name}_{collection_name}_{file_count}.json"
            with open(filename, 'w', encoding='utf-8') as f:
                json.dump(result, f, ensure_ascii=False, indent=2)

            total += len(result)
            print(f"Saved batch {file_count} to {filename}, records count: {len(result)} {total}")
            file_count += 1
    except Exception as e:
        print(f"Fatal error: {str(e)}")


if __name__ == "__main__":
    export_milvus_data(
        export_dir="./milvus_backup",
        uri="http://127.0.0.1:19530",
        user="",
        password="",
        db_name="",
        collection_name="",
        output_fields=[]
    )
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐