#!/usr/bin/env python3 """ LocationからLocation2025へsub_loc_idとsubcategoryを移行するスクリプト """ import os import sys import django # Djangoの設定 sys.path.append('/app') os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') django.setup() from rog.models import Location, Location2025 def migrate_sub_fields(): """LocationからLocation2025にsub_loc_idとsubcategoryを移行""" print("LocationからLocation2025への移行を開始します...") # Locationデータを取得 locations = Location.objects.all() print(f"移行対象のLocationレコード数: {locations.count()}") # Location2025データとマッチングして更新 updated_count = 0 not_found_count = 0 for location in locations: # cp_numberとcp_nameでLocation2025を検索 try: # location_idをcp_numberとして検索 location2025_records = Location2025.objects.filter( cp_number=location.location_id, cp_name__icontains=location.location_name[:50] # 名前の部分一致 ) if location2025_records.exists(): for location2025 in location2025_records: # フィールドが空の場合のみ更新 if not location2025.sub_loc_id and location.sub_loc_id: location2025.sub_loc_id = location.sub_loc_id if not location2025.subcategory and location.subcategory: location2025.subcategory = location.subcategory location2025.save() updated_count += 1 print(f"✓ 更新: CP{location.location_id} - {location.location_name[:30]}...") else: not_found_count += 1 print(f"✗ 未発見: CP{location.location_id} - {location.location_name[:30]}") except Exception as e: print(f"エラー (CP{location.location_id}): {str(e)}") print(f"\n移行完了:") print(f" 更新レコード数: {updated_count}") print(f" 未発見レコード数: {not_found_count}") print(f" 元レコード数: {locations.count()}") if __name__ == "__main__": migrate_sub_fields()