0
我正在使用Python 3.6.1和pypyodbc库将.csv文件导入Management Studio中的本地数据库。任何人都可以告诉我为什么这个代码在Management Studio中可以很好地工作,但不是在我的pypyodbc脚本中?pypyodbc网络路径无法正常工作
Python脚本运行时没有任何错误,但它实际上并未将C:\MemberMapUpdates
中的新.csv文件插入到CSVTest表中。当我在management studio中运行该SQL命令时,它会按预期插入值。 任何的见解值得赞赏。谢谢。
import pypyodbc
connection = pypyodbc.connect('Driver={SQL Server};'
'Server=SERVER-SQL;'
'Database=server1;'
'uid=sa;pwd=Pa$$word!')
cursor = connection.cursor()
SQLCommand = (
'''
drop table if exists CSVTest
create table CSVTest
(dccode varchar(255),
member varchar(255),
date_sub date,
date_add date,
sa_update date,
buff_rad float,
geom varchar(255),
sub_type varchar(255),
notes varchar(255))
bulk
insert CSVTest
from 'C:\MemberMapUpdates\MemberMapUpdates.csv'
with (FIRSTROW = 3, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
'''
)
cursor.execute(SQLCommand)
connection.close()
print('Process Completed')
与存储过程更新脚本插入
import pypyodbc
#from osgeo import ogr
connection = pypyodbc.connect('Driver={SQL Server};'
'Server=SERVER-SQL;'
'Database=DB;'
'uid=sa;[email protected]!')
cursor = connection.cursor()
SQLCommand = ('exec FirstProcedure')
cursor.execute(SQLCommand)
connection.close()
print('Process Completed')
这是存储过程:
drop table if exists CSVTest;
create table CSVTest
(dccode varchar(255),
member varchar(255),
date_sub date,
date_add date,
sa_update date,
buff_rad float,
geom varchar(255),
sub_type varchar(255),
notes varchar(255));
bulk
insert CSVTest
from '\\NETWORKSHARE\MemberMapUpdates\MemberMapUpdates.csv'
with (FIRSTROW = 3, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
您在这里有几个DDL/DML命令,并且游标一次只能运行一个。考虑将所有内容放在存储过程中并让Python调用它。 – Parfait
感谢您的建议,但获得了相同的结果。 – Matt
你尝试了什么?你分割了这些命令还是运行了一个存储过程?请展示。 – Parfait