我知道以前有人问过这种问题,但还是找不到我想要的答案。我正在将csv文件大容量插入到SQL Server表中,但出现如下错误:
我的代码:
df_output.to_csv('new_file_name.csv', sep=',', encoding='utf-8')
conn = pyodbc.connect(r'DRIVER={SQL Server}; PORT=1433; SERVER=Dev02; DATABASE=db;UID='';PWD='';')
curr = conn.cursor()
print("Inserting!")
curr.execute("""BULK INSERT STG_CONTACTABILITY_SCORE
FROM 'C:\\Users\\kdalal\\callerx_project\\caller_x\\new_file_name.csv'
WITH
(
CODEPAGE = 'ACP',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);""")
conn.commit()
错误:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot bulk load because the file "C:\Users\kdalal\callerx_project\caller_x\new_file_name.csv" could not be opened. Operating system error code 3(The system cannot find the path specified.). (4861) (SQLExecDirectW)')
'新建_文件_名称.csv'在指定的路径中。我试着把路径改成“新文件”_名称.csv'因为它在我运行脚本的文件夹中,它仍然抛出一个
file does not exists
你能告诉我我做错什么了吗。事先非常感谢。在
大容量插入语句是在SQL Server计算机上执行的,因此必须可以从该计算机访问文件路径。您将得到“系统找不到指定的路径”,因为路径
是您的计算机上的路径,而不是SQL Server计算机。在
由于要将数据帧的内容转储到CSV文件中,因此只需使用
df.to_sql
将内容直接推送到SQL Server,而不需要中间的CSV文件。为了提高性能,您可以告诉SQLAlchemy使用pyodbc的fast_executemany
选项,如相关问题中所述Speeding up pandas.DataFrame.to_sql with fast_executemany of pyODBC
相关问题 更多 >
编程相关推荐