Linux下使用python脚本执行BCP导入导出操作

December 17, 2023
测试
测试
测试
测试
4 分钟阅读

创建一张表Test001

create table Test001(
ID int,
age int,
name varchar(50)
)

再创建一张表Test002

create table Test002(
Id int,
age int,
name varchar(50),
addr varchar(50)
)

插入三条数据

insert into Test002 values(1,25,'Bob','New York')
insert into Test002 values(2,22,'Mary','HongKong')
insert into Test002 values(3,25,'David','London')
这里写图片描述
这里写图片描述

Python脚本

#!/usr/bin/env python
#coding=utf-8

import pymssql
import subprocess

class testBcp:

    def getConn(self):
        server = "192.168.1.1"
        user= "sa"
        password = "testBcp@1"
        db = "TESTBCP"
        # 打开数据库连接
        conn = pymssql.connect(server,user,password,db)
        return conn

    def BCPExe(self,bcpString):
        conn = self.getConn()
        # 使用cursor()方法获取操作游标
        cursor = conn.cursor()
        result_code = subprocess.call(bcpString, shell=True)
        print(result_code)

if __name__=="__main__":
    tB=testBcp()
    BCPout="bcp 'select ID,age,name from TESTBCP.dbo.Test002' queryout tempData.csv -c -U sa -P testBcp@1 -S 192.168.1.1"
    BCPin='bcp TESTBCP.dbo.Test001 in tempData.csv -c -U sa -P testBcp@1 -S 192.168.1.1'
    #select ID,age,name from TESTBCP.dbo.Test002 使用sql语句查询出结果集写入tempData.csv文件中
    tB.BCPExe(BCPout)
    #将文件中的数据写入表test001中
    tB.BCPExe(BCPin)

以上python脚本首先从test002中将数据查询出来,将结果集使用BCP写入tempData.csv文件中,然后再使用BCP将文件中的数据写入表test001中。此时可以看到test001中现在已经有数据了。

这里写图片描述
这里写图片描述

注意:如果文件中的数据源是来自于多个渠道,那么在拼接字符串的时候切记每个字段要使用’\t’隔开,否则会由于文件中数据格式不正确导致BCP写入操作失败。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多