使用 pyodbc 批量插入 SQL 服务器 table:找不到文件
BULK INSERT into SQL Server table using pyodbc: cannot find file
我知道以前有人问过这种问题,但仍然找不到我要找的答案。我正在将 csv 文件批量插入到 SQL 服务器 table 但我收到如下所示的错误:
我的代码:
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)')
'new_file_name.csv' 在指定的路径中。我尝试将路径更改为 'new_file_name.csv' 因为它位于我所在的文件夹中 运行 脚本仍然抛出
file does not exists
你能告诉我我做错了什么吗?非常感谢。
BULK INSERT 语句在 SQL 服务器计算机上执行,因此文件路径必须可从该计算机访问。你得到 "The system cannot find the path specified" 因为路径
C:\Users\kdalal\callerx_project\caller_x\new_file_name.csv
是您的机器上的路径,而不是SQL服务器机器上的路径。
由于您将数据帧的内容转储到 CSV 文件,因此您可以简单地使用 df.to_sql
将内容直接推送到 SQL 服务器,而无需中间 CSV 文件。要提高性能,您可以告诉 SQLAlchemy 使用 pyodbc 的 fast_executemany
选项,如相关问题
中所述
我知道以前有人问过这种问题,但仍然找不到我要找的答案。我正在将 csv 文件批量插入到 SQL 服务器 table 但我收到如下所示的错误:
我的代码:
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)')
'new_file_name.csv' 在指定的路径中。我尝试将路径更改为 'new_file_name.csv' 因为它位于我所在的文件夹中 运行 脚本仍然抛出
file does not exists
你能告诉我我做错了什么吗?非常感谢。
BULK INSERT 语句在 SQL 服务器计算机上执行,因此文件路径必须可从该计算机访问。你得到 "The system cannot find the path specified" 因为路径
C:\Users\kdalal\callerx_project\caller_x\new_file_name.csv
是您的机器上的路径,而不是SQL服务器机器上的路径。
由于您将数据帧的内容转储到 CSV 文件,因此您可以简单地使用 df.to_sql
将内容直接推送到 SQL 服务器,而无需中间 CSV 文件。要提高性能,您可以告诉 SQLAlchemy 使用 pyodbc 的 fast_executemany
选项,如相关问题