ИИ хорошо подходит для преобразования форматов (CSV ↔ JSON ↔ SQL) и скриптов миграции, так как правила трансформации механические. Суть в том, чтобы дать ему достаточно контекста для корректности и безопасности: схемы, образец строки и явные требования безопасности.
Как это запросить
- Предоставьте исходную и целевую схему — имена столбцов, типы, допустимость null.
- Включите реальный образец строки, чтобы он увидел фактическую форму и граничные случаи (кавычки, nulls, даты).
- Требуйте, чтобы это было идемпотентным и проверенным — повторный запуск не должен дублировать или повреждать данные; плохие строки должны быть перехвачены, а не молча вставлены.
- Всегда выполняйте пробный запуск на копии данных перед прикосновением к production. Сначала проверьте результат.
Пример: CSV → SQL inserts
import csv
# Source CSV: id,email,signup_date (signup_date may be blank)
# Target table: users(id INT, email TEXT NOT NULL, signup_date DATE NULL)
def csv_to_sql(path: str) -> list[str]:
statements = []
with open(path, newline="", encoding="utf-8") as f:
for row in csv.DictReader(f):
email = row["email"].strip()
if not email: # validate: skip invalid rows, don't insert garbage
continue
date = row["signup_date"].strip() or None
email_sql = email.replace("'", "''") # escape quotes to avoid broken SQL / injection
date_sql = f"'{date}'" if date else "NULL"
# ON CONFLICT makes it idempotent: re-running won't create duplicates
statements.append(
f"INSERT INTO users (id, email, signup_date) "
f"VALUES ({int(row['id'])}, '{email_sql}', {date_sql}) "
f"ON CONFLICT (id) DO NOTHING;"
)
return statements
Комментарии отмечают важные части: валидация (пропустить пустые письма), экранирование (кавычки) и идемпотентность (ON CONFLICT DO NOTHING). Попросите ИИ включить все три — это то, что забывает наивный скрипт.
Почему это важно
Миграции данных — это высокие ставки и обычно одноразовая операция: скрипт, который дублирует или теряет строки, может быть дорогостоящим для отката. ИИ ускоряет написание преобразования, но свойства безопасности — идемпотентность, валидация и пробный запуск на копии — обязательны. Относитесь к сгенерированному скрипту как к черновику, который вы должны прочитать и протестировать, а не как к чему-то, что нужно слепо запустить на реальных данных.
