본문으로 건너뛰기
🛠️ToolsShed

CSV → SQL INSERT 생성기

CSV 데이터를 SQL INSERT 문으로 변환합니다. 자동 감지 컬럼 타입으로 CREATE TABLE DDL도 생성합니다.

이 도구 소개

CSV to SQL INSERT 생성기는 스프레드시트 데이터를 실행 가능한 SQL INSERT 문으로 변환하는 브라우저 기반 도구입니다. 이 유틸리티는 CSV 파일에서 SQL 데이터베이스로 데이터를 마이그레이션하고, 테스트 데이터베이스를 빠르게 채우거나, 모든 SQL 데이터베이스 시스템에 대해 직접 실행할 수 있는 형식으로 데이터를 공유해야 하는 개발자와 데이터베이스 관리자에게 필수적입니다.

이 도구를 사용하려면 CSV 데이터를 붙여넣거나 업로드하면 자동으로 열 헤더와 데이터 유형이 감지됩니다. 그런 다음 기존 테이블의 일반 INSERT 문을 생성하거나 추론된 열 정의가 있는 CREATE TABLE 문을 포함시킬 수 있습니다. 이 도구는 테이블 이름 지정, NULL 값 처리, 다양한 SQL 방언 또는 인용 스타일 선택 등 사용자 정의 옵션을 지원합니다.

이 도구는 따옴표로 묶인 필드의 쉼표, 셀 내의 줄바꿈, 특수 문자 등의 엣지 케이스를 우아하게 처리합니다. 일회성 데이터 가져오기, 개발 데이터베이스 시딩 또는 명령줄 도구나 데이터베이스 클라이언트 소프트웨어를 필요로 하지 않는 백업 및 복원 워크플로우를 위한 데이터 세트 준비에 특히 유용합니다.

자주 묻는 질문

코드 구현

import csv
import io

def csv_to_sql(csv_text, table_name="my_table", include_create=True):
    reader = csv.reader(io.StringIO(csv_text.strip()))
    rows = list(reader)
    if len(rows) < 2:
        return ""

    headers = rows[0]
    data_rows = rows[1:]

    def infer_type(values):
        for v in values:
            v = v.strip()
            if v == "":
                continue
            try:
                int(v)
                return "INT"
            except ValueError:
                try:
                    float(v)
                    return "FLOAT"
                except ValueError:
                    return "VARCHAR(255)"
        return "VARCHAR(255)"

    types = [infer_type([r[i] for r in data_rows if i < len(r)])
             for i in range(len(headers))]

    sql = []
    if include_create:
        cols = ", ".join(f"{h} {t}" for h, t in zip(headers, types))
        sql.append(f"CREATE TABLE {table_name} ({cols});")

    for row in data_rows:
        values = []
        for i, val in enumerate(row):
            if types[i] == "VARCHAR(255)":
                values.append(f"'{val.replace(chr(39), chr(39)*2)}'")
            else:
                values.append(val if val.strip() else "NULL")
        cols_str = ", ".join(headers)
        vals_str = ", ".join(values)
        sql.append(f"INSERT INTO {table_name} ({cols_str}) VALUES ({vals_str});")

    return "\n".join(sql)

csv_data = """id,name,score
1,Alice,95.5
2,Bob,87"""

print(csv_to_sql(csv_data))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.