AI rất phù hợp với chuyển đổi định dạng (CSV ↔ JSON ↔ SQL) và script migration vì các quy tắc biến đổi mang tính cơ học. Bí quyết là cho nó đủ ngữ cảnh để đúng và an toàn: schema, một dòng mẫu, và các yêu cầu an toàn tường minh.
AI rất phù hợp với chuyển đổi định dạng (CSV ↔ JSON ↔ SQL) và script migration vì các quy tắc biến đổi mang tính cơ học. Bí quyết là cho nó đủ ngữ cảnh để đúng và an toàn: schema, một dòng mẫu, và các yêu cầu an toàn tường minh.
import csv
# CSV nguồn: id,email,signup_date (signup_date có thể trống)
# Bảng đích: 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: bỏ qua dòng không hợp lệ, không insert rác
continue
date = row["signup_date"].strip() or None
email_sql = email.replace("'", "''") # escape dấu nháy để tránh SQL hỏng / injection
date_sql = f"'{date}'" if date else "NULL"
# ON CONFLICT làm nó idempotent: chạy lại không tạo bản trùng
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
Các comment đánh dấu những phần quan trọng: validation (bỏ qua email rỗng), escaping (dấu nháy), và idempotency (ON CONFLICT DO NOTHING). Yêu cầu AI bao gồm cả ba — đó là những thứ một script ngây thơ hay quên.
Di chuyển dữ liệu có rủi ro cao và thường chỉ chạy một lần: một script insert nhân đôi hay làm mất dòng có thể tốn kém để hoàn tác. AI tăng tốc việc viết phần chuyển đổi, nhưng các thuộc tính an toàn — idempotency, validation, và dry-run trên một bản sao — là không thể thỏa hiệp. Hãy coi script được sinh ra như một bản nháp bạn phải đọc và test, đừng bao giờ coi nó là thứ chạy mù trên dữ liệu thật.