zoukankan      html  css  js  c++  java
  • Python中执行sql脚本时GO语句出错问题

    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 mp.txt, 需要写成这样 "d:\sql\tmp.txt"

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

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

  • 相关阅读:
    CSUST 4005-你真的会!(分治思维+线段树)
    CSUST 4007-你真的会图论吗?(思维-三元环)
    CSUST 4002-你真的会字符串吗?(DP)
    Odoo下拉动作列表
    Odoo Shell
    Odoo report
    Odoo Web Service API
    Odoo启动过程
    Odoo10 变化
    Odoo10尝鲜:出勤登记
  • 原文地址:https://www.cnblogs.com/sammy1989/p/6066769.html
Copyright © 2011-2022 走看看