码迷,mamicode.com
首页 > 数据库 > 详细

Python中执行sql脚本时GO语句出错问题

时间:2016-11-15 20:21:38      阅读:557      评论:0      收藏:0      [点我收藏+]

标签:insert   value   服务器   执行sql   用户名   near   python   参考   bug   

sql脚本:

--创建链接服务器 (其中db2server是DB2的ip地址或服务器名)
exec sp_addlinkedserver ‘srv_lnk‘, ‘‘, ‘SQLOLEDB‘,‘10.138.60.94‘
exec sp_addlinkedsrvlogin ‘srv_lnk‘,‘false‘,null,‘sa‘,‘123456‘
Go
--数据导入(表B存在)
--Insert into srv_lnk.sys.Estamp.EstampConfig(field1,field2)
INSERT INTO srv_lnk.[PostLoan].[dbo].[TestReport]
([DBVersion]
,[CodeLines]
,[Duration]
,[LastDate]
,[Summary]
,[Amount]
,[SuccessAmount]
,[FailAmount]
,[BugAmount]
,[Remark])
SELECT
[DBVersion]
,[CodeLines]
,[Duration]
,[LastDate]
,[Summary]
,[Amount]
,[SuccessAmount]
,[FailAmount]
,[BugAmount]
,[Remark]
FROM [PostLoan].[dbo].[TestReport]
--数据导入(表B不存在)
--SELECT value1,value2 into srv_lnk.DB2.dbo.B
--from DB1.dbo.A

--关闭连接
exec sp_dropserver ‘srv_lnk‘,‘droplogins‘

 

直接利用Python中的pymssql库执行以上脚本的时候,会报错:“Incorrect syntax near ‘Go‘.DB-Lib error message 20018, severity 15”。这是因为GO不是sql中的关键字。

这时可以利用python中的os.system+sqlcmd执行sql脚本,方法如下:

import os os.system("sqlcmd -S localhost -U sa -P 123456 -d TRAINING -i \"d:\\sql\\tmp.txt\"")

sqlcmd命令参数说明:

-S:表示数据库服务器地址,如localhost

-U:用户名,如sa

-P: 密码,如123456

-d:数据库名,如TRAINING

-i:文件路径,如文件存放在d:\sql\tmp.txt, 需要写成这样 \"d:\\sql\\tmp.txt\"

路径书写需要注意下。路径用双引号"file_path",外面已经有双引号了,需要转义。因为是在windows系统,路径用反斜杠,也需要转义下。

参考地址:https://my.oschina.net/shong/blog/768394

Python中执行sql脚本时GO语句出错问题

标签:insert   value   服务器   执行sql   用户名   near   python   参考   bug   

原文地址:http://www.cnblogs.com/sammy1989/p/6066769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!