Я настраиваю новую виртуальную машину на сервере для разгрузки загрузки базы данных SQL Server с моего ноутбука.При этом я хотел бы иметь возможность выполнять хранимые процедуры (без параметров, просто 'exec storeprocedure') в моей базе данных через Python, но это не работает.
Вызов хранимой процедуры работал при использовании sqlcmd черезпакетный файл и в SSMS, но я хотел бы сделать все это на основе Python.
Хранимая процедура добавляет таблицы фактов в следующем общем формате:
--staging tbl drop and creation
if object_id(stagingtbl) is not null drop tabl stagingtbl
create table stagingtbl
(fields datatypes nullable
)
--staging tbl load
bulk insert stagingtbl
from 'c:\\filepath\\filename.csv'
with (
firstrow = 2
, rowterminator = '\n'
,fieldterminator = ','
, tablock /*don't know what tablock does but it works...*/
)
--staging table transformation
; with cte as (
/*ETL process to transform csv file into my tbl structure*/
)
--final table load
insert final_tbl
select * from cte
/*
T-SQL update the final table's effect to date, based on subsequent effect from date.
eg:
id, effectfromdate, effecttodate
1,1/1/19, 1/1/3000
1,1/10/19, 1/1/3000
becomes
id, effectfromdate, effecttodate
1,1/1/19, 1/10/19
1,1/10/19, 1/1/3000
*/
Хранимая процедура прекрасно работает с sqlcmd и в ssms, но в python (pyodbc), выполняя запрос 'exec сохраненная процедура', Я получаю сообщение об ошибке:
pyodbc.ProgrammingError: (' 42000 ',' [42000] [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server]
Невозможно выполнить массовую загрузкупотому что файл "c: \ filepath \ filename.csv" не может быть открыт.
Код ошибки операционной системы 3 (системе не удается найти указанный путь.). (4861) (SQLExecDirectW) ')
Когда есть файл csv, нет ошибок в пути или имени файла, и я могу открыть csv при двойном щелчке по нему, и никто не открывает csv.