簡體   English   中英

使用pyodbc將BULK INSERT插入SQL Server表:找不到文件

[英]BULK INSERT into SQL Server table using pyodbc: cannot find file

我知道之前已經問過這種問題,但仍然無法找到我正在尋找的答案。 我正在將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驅動程序] [SQL Server]無法批量加載,因為文件“C:\\ Users \\ kdalal \\ callerx_project \\ caller_x \\ new_file_name.csv”無法操作系統錯誤代碼3(系統找不到指定的路徑。)。(4861)(SQLExecDirectW)')

'new_file_name.csv'位於指定的路徑中。 我嘗試將路徑更改為'new_file_name.csv',因為它位於我運行腳本的文件夾中仍然會拋出一個

文件不存在

你能告訴我這里我做錯了什么嗎? 非常感謝提前。

BULK INSERT語句在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選項,如相關問題中所述

使用pyODBC的fast_executemany加速pandas.DataFrame.to_sql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM