0
私は、Python 3.6.1とpypyodbcライブラリを使用して.csvファイルをManagement StudioのローカルDBにインポートしています。誰も私のpypyodbcスクリプトではなく、このコードがManagement Studioで完璧にうまく動作する理由を教えていただけますか?pypyodbcネットワークパスが正しく動作しない
Pythonスクリプトはエラーなしで実行されますが、実際には新しいCSVファイルがC:\MemberMapUpdates
のCSVTestテーブルに挿入されるわけではありません。管理スタジオで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コマンドがあり、カーソルは一度に1つのみ実行されます。すべてをストアドプロシージャに配置し、Pythonに呼び出させてください。 – Parfait
あなたの提案に感謝しますが、同じ結果が得られました。 – Matt
何を試しましたか?コマンドを分割したか、ストアドプロシージャを実行しましたか?見せてください。 – Parfait