使用pyodbc将大容量插入到SQL Server表中:找不到fi

2024-07-02 12:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道以前有人问过这种问题,但还是找不到我想要的答案。我正在将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

你能告诉我我做错什么了吗。事先非常感谢。在


Tags: 文件csvnameprojectnewsqlserver错误
1条回答
网友
1楼 · 发布于 2024-07-02 12:31:13

大容量插入语句是在SQL Server计算机上执行的,因此必须可以从该计算机访问文件路径。您将得到“系统找不到指定的路径”,因为路径

C:\\Users\\kdalal\\callerx_project\\caller_x\\new_file_name.csv

您的计算机上的路径,而不是SQL Server计算机。在

由于要将数据帧的内容转储到CSV文件中,因此只需使用df.to_sql将内容直接推送到SQL Server,而不需要中间的CSV文件。为了提高性能,您可以告诉SQLAlchemy使用pyodbc的fast_executemany选项,如相关问题中所述

Speeding up pandas.DataFrame.to_sql with fast_executemany of pyODBC

相关问题 更多 >