如何使用Pandas导出无引号的表DDL至.sql文件?
解决Pandas导出DDL时带引号的问题
首先修正你的SQL查询语句:要获取表的DDL需使用show create table tablename,原语句show table tablename仅能获取表名信息,无法得到建表语句。
以下是两种可行的解决方法:
方法一:直接提取文本写入文件(推荐)
绕过Pandas的to_csv方法,直接从DataFrame中提取DDL内容并写入.sql文件,彻底避免引号问题:
import pandas as pd # 修正后的查询语句 query = "show create table tablename" df = pd.read_sql(query, connect) # 提取DDL内容(不同数据库列名可能有差异,比如MySQL中列名为`Create Table`) # 取第一行的DDL字段,去除前后可能存在的引号和空白字符 ddl_content = df.iloc[0, df.columns.get_loc('Create Table')].strip().strip('"') # 写入SQL文件 with open('xyz.sql', 'w', encoding='utf-8') as f: f.write(ddl_content)
方法二:调整to_csv的参数
若坚持使用to_csv,需正确配置引号相关参数,同时导入csv模块:
import pandas as pd import csv query = "show create table tablename" df = pd.read_sql(query, connect) # 设置quoting为csv.QUOTE_NONE,同时关闭转义字符 df.to_csv('xyz.sql', index=False, header=False, quoting=csv.QUOTE_NONE, escapechar=None)
说明:部分数据库返回的DDL本身可能带有引号,此时需要先对提取的内容做strip('"')处理,才能彻底去除首尾引号。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

