python - 使用 Python 将 CSV 导入 SQL Express
问题描述
我正在尝试获取一个 csv 文件并使用 Python 将其导入 sql server express。我用谷歌搜索了这个问题,我看到的似乎对其他人有用的解决方案是:
import pymssql
import csv
conn = pymssql.connect(
server="servername",
user='username',
password='password',
database='db'
)
cursor = conn.cursor()
with open('new_csv_file.csv', 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into MyTable({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
cursor = conn.cursor()
for data in reader:
values = map((lambda x: x.strip()), data) # No need for the quote
print(tuple(values))
cursor.execute(query, tuple(values))
cursor.commit()
conn.commit()
cursor.close()
print("Done")
conn.close()
我已经确认代码有效,只是“execute()”部分无效。查询没问题,但“值”给了我以下错误:
(102, b"Incorrect syntax near 'Year'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")
其中“年份”是我试图将数据放入的列。
谢谢。
解决方案
好的,我找到了使用 sqlalchemy 和 pandas 的解决方法
import sqlalchemy
print('Creating Engine')
engine = sqlalchemy.create_engine('mssql+pymssql://username:password@localhost/db')
print('Reading Table')
df = pd.read_sql_table("table_name",engine)
print(df)
df_new = pd.read_csv('table_name_new.csv'%)
df_new.to_sql(name="table_name",
con = engine,
if_exists='replace'
)
df_test = pd.read_sql_table("table_name",engine)
如果有人确实发现了我的代码不起作用的原因,我仍然很感兴趣。我不知道这是否是 Python 3 问题(我使用的是 Python 3)。
干杯
推荐阅读
- google-api - 谷歌工作空间服务帐户的可移植性
- flutter - Flutter 2.5 更新 - 每个静态 Widget 上的 const 关键字
- c - C语言的UART通信(十六进制)
- substrate - Substrate Offchain-worker Http Fetch 错误
- nativescript - 预览服务已被禁用,直至另行通知。在 Svelte Native 上运行 ns preview 时,配置本地构建并使用“ns run”
- node.js - 移动语音通道不和谐js
- elasticsearch - Elasticsearch 在 MacOS 中启动失败?
- deployment - 用于瞪羚安全套件 6.2.7 版本的 EAR 部署失败,出现错误“无法索引类 module-info.class”
- python - 如何在 Python 中将字符串字典值转换为 dict 类型
- php - PHP 字符编码问题 Windows-1252 到 UTF-8