You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python从CSV生成SQL文件:解决字符串引号格式问题

解决Pandas生成SQL插入语句的单引号转义问题

核心需求

从CSV生成SQL文件时,需将字符串字段中的单引号转义为两个单引号,同时用单引号包裹字符串值,避免出现双引号格式。

解决方案步骤

1. 预处理CSV数据,替换单引号

遍历DataFrame中的所有字符串列,将单个单引号替换为两个单引号(SQL标准的单引号转义方式):

import pandas as pd

# 读取目标CSV文件
df = pd.read_csv("target_dir/your_file.csv")

# 处理所有字符串类型列的单引号转义
for col in df.select_dtypes(include=['object']).columns:
    df[col] = df[col].str.replace("'", "''", regex=False)

2. 手动生成符合要求的SQL语句

避免依赖pandas默认的to_sql方法(可能生成双引号),手动构造CREATE TABLE和INSERT INTO语句:

字段类型映射函数

先定义函数,将pandas数据类型映射为SQL数据类型:

def map_pandas_to_sql(dtype):
    if pd.api.types.is_integer_dtype(dtype):
        return "INT"
    elif pd.api.types.is_float_dtype(dtype):
        return "FLOAT"
    elif pd.api.types.is_string_dtype(dtype):
        return "VARCHAR(255)"
    elif pd.api.types.is_datetime64_dtype(dtype):
        return "DATETIME"
    else:
        return "VARCHAR(255)"

生成CREATE TABLE语句

table_name = "your_target_table"
create_sql = f"CREATE TABLE {table_name} (\n"
for col, dtype in df.dtypes.items():
    create_sql += f"    {col} {map_pandas_to_sql(dtype)},\n"
# 移除最后一行的逗号并闭合语句
create_sql = create_sql.rstrip(",\n") + "\n);\n"

生成INSERT INTO语句

insert_sql = f"INSERT INTO {table_name} ({', '.join(df.columns)}) VALUES\n"
for _, row in df.iterrows():
    row_values = []
    for val in row:
        if pd.isna(val):
            row_values.append("NULL")
        elif isinstance(val, str):
            # 直接用单引号包裹处理后的字符串
            row_values.append(f"'{val}'")
        else:
            # 数值类型直接转字符串
            row_values.append(str(val))
    insert_sql += f"    ({', '.join(row_values)}),\n"
# 移除最后一行的逗号并闭合语句
insert_sql = insert_sql.rstrip(",\n") + ";\n"

3. 写入SQL文件

将生成的CREATE和INSERT语句写入目标.sql文件:

with open("output_table.sql", "w", encoding="utf-8") as sql_file:
    sql_file.write(create_sql)
    sql_file.write(insert_sql)

效果验证

处理后生成的INSERT语句会符合要求格式,例如:

('non_concerne','Non concerné(e)','information non possible ou non pertinente pour l''élément décrit')

内容的提问来源于stack exchange,提问作者pasqal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:00:20