本文实例讲述了Python实现读取SQLServer数据并插入到MongoDB数据库的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
# -*- coding: utf-8 -*- import pyodbc import os import csv import pymongo from pymongo import ASCENDING, DESCENDING from pymongo import MongoClient import binascii '''连接mongoDB数据库''' client = MongoClient( '10.20.4.79' , 27017 ) #client = MongoClient('10.20.66.106', 27017) db_name = 'SoftADoutput' db = client[db_name] '''连接SqlServer数据库''' connStr = 'DRIVER={SQL Server Native Client 11.0};SERVER=DESKTOP-44P34L6;DATABASE=Softput;UID=sa;PWD=sa' conn = pyodbc.connect(connStr) cursor = conn.cursor() #########################################Channel_CovCode数据插入########################## '''从SQLServer数据库读取Channel_CovCode数据写入到mongodb数据库中Channel_CovCode集合中''' def InsertChannel_CovCode(cursor): cursor.execute( "select dm, ms from channel_CovCode" ) rows = cursor.fetchall() i = 1 for row in rows: #gb18030 db.channel_CovCode.insert({ '_id' :i, 'dm' :row.dm, 'ms' :row.ms.decode( 'gbk' ).encode( 'utf-8' )}) i = i + 1 InsertChannel_CovCode(cursor) ############################################################################################# #########################################channel_ModeCode数据插入############################# '''从SQLServer数据库读取channel_ModeCode数据写入到mongodb数据库中channel_ModeCode集合中''' def InsertChannel_ModeCode(cursor): cursor.execute( "select dm, ms from channel_ModeCode" ) rows = cursor.fetchall() i = 1 for row in rows: #gb18030 db.channel_ModeCode.insert({ '_id' :i, 'dm' :row.dm, 'ms' :row.ms.decode( 'gbk' ).encode( 'utf-8' )}) i = i + 1 InsertChannel_ModeCode(cursor) ############################################################################################# #########################################citynumb数据插入######################## '''从SQLServer数据库读取citynumb数据写入到mongodb数据库中citynumb集合中''' def InsertCitynumb(cursor): cursor.execute( "select t.XZQMC,t.SMC,t.CSMC,t.SSQYDM,t.CITY_E,t.AREA_E,t.PROV_E from citynumb t" ) rows = cursor.fetchall() i = 1 for row in rows: xzqmc = row.XZQMC if xzqmc ! = None : xzqmc = xzqmc.decode( 'gbk' ).encode( 'utf-8' ) smc = row.SMC if smc ! = None : smc = smc.decode( 'gbk' ).encode( 'utf-8' ) csmc = row.CSMC if csmc ! = None : csmc = csmc.decode( 'gbk' ).encode( 'utf-8' ) db.citynumb.insert({ '_id' :i, 'XZQMC' :xzqmc, 'SMC' :smc, 'CSMC' :csmc, 'SSQYDM' :row.SSQYDM, 'CITY_E' :row.CITY_E, 'AREA_E' :row.AREA_E, 'PROV_E' :row.PROV_E}) i = i + 1 InsertCitynumb(cursor) ################################################################################################################## #########################################channel数据插入############################ '''从SQLServer数据库读取channel数据写入到mongodb数据库中channel集合中''' def InsertChannel(cursor): cursor.execute( "select pdcmc,pdemc,pdemcj,pdbm1,ssqydm,cov,sdate,mode,startTime,endTime,memo,pdtype,sflag,edate,corporation from channel" ) rows = cursor.fetchall() i = 1 for r in rows: pdcmc = r.pdcmc if pdcmc ! = None : pdcmc = pdcmc.decode( 'gbk' ).encode( 'utf-8' ) memo = r.memo if memo ! = None : memo = memo.decode( 'gbk' ).encode( 'utf-8' ) corporation = r.corporation if corporation ! = None : corporation = corporation.decode( 'gbk' ).encode( 'utf-8' ) db.channel.insert({ '_id' :i, 'pdcmc' :pdcmc, 'pdemc' :r.pdemc, 'pdemcj' :r.pdemcj, 'pdbm1' :r.pdbm1, 'ssqydm' :r.ssqydm, 'cov' :r.cov, 'sdate' :r.sdate, 'mode' :r.mode, 'startTime' :r.startTime, 'endTime' :r.endTime, 'memo' :memo, 'pdtype' :r.pdtype, 'sflag' :r.sflag, 'edate' :r.edate, 'corporation' :corporation}) i = i + 1 InsertChannel(cursor) ############################################################################################# #########################################CPBZK数据插入############################ '''从SQLServer数据库读取CPBZK数据写入到mongodb数据库中CPBZK集合中''' def InsertCPBZK(cursor): cursor.execute( "select ZTC,EZTC,ZTC_CODE,LBDM,B_CODE,QY_CODE,IChange,cla from CPBZK" ) rows = cursor.fetchall() i = 1 for r in rows: #gb18030 ztc = r.ZTC if ztc ! = None : ztc = ztc.decode( 'gbk' ).encode( 'utf-8' ) db.CPBZK.insert({ '_id' :i, 'ZTC' :ztc, 'EZTC' :r.EZTC, 'ZTC_CODE' :r.ZTC_CODE, 'LBDM' :r.LBDM, 'B_CODE' :r.B_CODE, 'QY_CODE' :r.QY_CODE, 'IChange' :r.IChange, 'cla' :r.cla}) i = i + 1 InsertCPBZK(cursor) ############################################################################################# #########################################TVPGMCLASS数据插入########################## '''从SQLServer数据库读取TVPGMCLASS数据写入到mongodb数据库中TVPGMCLASS集合中''' def InsertTVPGMCLASS(cursor): cursor.execute( "select ClassChDesc,ClassEnDesc,ClassCode,ParentCode,SortNo from TVPGMCLASS" ) rows = cursor.fetchall() i = 1 for r in rows: #gb18030 classChDesc = r.ClassChDesc if classChDesc ! = None : classChDesc = classChDesc.decode( 'gbk' ).encode( 'utf-8' ) db.TVPGMCLASS.insert({ '_id' :i, 'ClassChDesc' :classChDesc, 'ClassEnDesc' :r.ClassEnDesc, 'ClassCode' :r.ClassCode, 'ParentCode' :r.ParentCode, 'SortNo' :r.SortNo}) i = i + 1 InsertTVPGMCLASS(cursor) ############################################################################################# #########################################GGBZK_DESCRIPTION数据插入########################### '''从SQLServer数据库读取GGBZK_DESCRIPTION数据写入到mongodb数据库中GGBZK_DESCRIPTION集合中''' def InsertGGBZK_DESCRIPTION(cursor): cursor.execute( "select V_code,des_named,des_main,des_background,des_scene,des_words,ModifyFlag,UpdateDate from GGBZK_DESCRIPTION" ) rows = cursor.fetchall() i = 1 for r in rows: #gb18030 name = r.des_named if name ! = None : name = name.decode( 'gbk' ).encode( 'utf-8' ) desmain = r.des_main if desmain ! = None : desmain = desmain.decode( 'gbk' ).encode( 'utf-8' ) background = r.des_background if background ! = None : background = background.decode( 'gbk' ).encode( 'utf-8' ) scene = r.des_scene if scene ! = None : scene = scene.decode( 'gbk' ).encode( 'utf-8' ) words = r.des_words if words ! = None : words = words.decode( 'gbk' ).encode( 'utf-8' ) db.GGBZK_DESCRIPTION.insert({ '_id' :i, 'V_code' :r.V_code, 'des_named' :name, 'des_main' :desmain, 'des_background' :background, 'des_scene' :scene, 'des_words' :words, 'ModifyFlag' :r.ModifyFlag, 'UpdateDate' :r.UpdateDate}) i = i + 1 InsertGGBZK_DESCRIPTION(cursor) #########################################Z201607_027数据插入########################## '''从SQLServer数据库读取Z201607_027数据写入到mongodb数据库中Z201607_027集合中''' def InsertZ201607_027(cursor): strSql = "select PD,RQ,SHIJIAN,ENDSHIJIAN,LBDM,ZTC_CODE,V_CODE,B_CODE,QY_CODE,QUANLITY,SPECIAL,LANGUAGE,LENGTH,SLENGTH,QJM1,QJM2,QGG,HJM1,HJM2,HGG,DUAN,OSHIJIAN,JG,SORTNO,LURU,ZFILE,COST,ROWTS,COST1,COST2,COST3 from Z201607_027" cursor.execute(strSql) rows = cursor.fetchall() i = 1 for r in rows: #gb18030 cost = float (r.COST) #COST money类型 cost1 = float (r.COST1) cost2 = float (r.COST2) cost3 = float (r.COST3) #先把时间戳转为字符串,然后再转为十进制数 rowts = int ( str (binascii.b2a_hex(r.ROWTS)), 16 ) luru = r.LURU if luru ! = None : luru = luru.decode( 'gbk' ).encode( 'utf-8' ) vCODE = r.V_CODE if vCODE ! = None : vCODE = vCODE.decode( 'gbk' ).encode( 'utf-8' ) db.Z201607_027.insert({ '_id' :i, 'PD' :r.PD, 'RQ' :r.RQ, 'SHIJIAN' :r.SHIJIAN, 'ENDSHIJIAN' :r.ENDSHIJIAN, 'LBDM' :r.LBDM, 'ZTC_CODE' :r.ZTC_CODE, 'V_CODE' :vCODE, 'B_CODE' :r.B_CODE, 'QY_CODE' :r.QY_CODE, 'QUANLITY' :r.QUANLITY, 'SPECIAL' :r.SPECIAL, 'LANGUAGE' :r.LANGUAGE, 'LENGTH' :r.LENGTH, 'SLENGTH' :r.SLENGTH, 'QJM1' :r.QJM1, 'QJM2' :r.QJM2, 'QGG' :r.QGG, 'HJM1' :r.HJM1, 'HJM2' :r.HJM2, 'HGG' :r.HGG, 'DUAN' :r.DUAN, 'OSHIJIAN' :r.OSHIJIAN, 'JG' :r.JG, 'SORTNO' :r.SORTNO, 'LURU' :luru, 'ZFILE' :r.ZFILE, 'COST' :cost, 'ROWTS' :rowts, 'ExpandProperty' :' ',' COST1 ':cost1,' COST2 ':cost2,' COST3':cost3}) i = i + 1 InsertZ201607_027(cursor) ############################################################################################# |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/shaosks/p/5729166.html