17
17
sql_create1 = """
18
18
CREATE TABLE t_enterprise (
19
19
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
20
- name VARCHAR(300) NOT NULL COMMENT '企业名称',
21
- tax_code VARCHAR(60) NOT NULL COMMENT '税号',
20
+ name VARCHAR(100) COMMENT '企业名称',
21
+ tax_code VARCHAR(30) COMMENT '税号',
22
22
region_id BIGINT COMMENT '区域ID',
23
23
customer_type INTEGER COMMENT '客户类型',
24
24
enterprise_type INTEGER COMMENT '企业类型',
25
25
address VARCHAR(200) COMMENT '详细地址',
26
26
postcode VARCHAR(10) COMMENT '邮编',
27
- tel VARCHAR(30 ) COMMENT '联系电话',
27
+ tel VARCHAR(50 ) COMMENT '联系电话',
28
28
contact VARCHAR(10) COMMENT '联系人',
29
29
fax VARCHAR(30) COMMENT '传真',
30
- mobile VARCHAR(30 ) COMMENT '手机号',
30
+ mobile VARCHAR(16 ) COMMENT '手机号',
31
31
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
32
32
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
33
33
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT '企业表';
37
37
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
38
38
region_code VARCHAR(16) COMMENT '邮编',
39
39
regian_name VARCHAR(20) COMMENT '区域名',
40
- note VARCHAR(120 ) COMMENT '备注',
40
+ note VARCHAR(200 ) COMMENT '备注',
41
41
parent_id BIGINT COMMENT '父级ID',
42
42
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
43
43
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
66
66
"""
67
67
logging .basicConfig (level = logging .INFO ,
68
68
format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s' ,
69
- datefmt = '%Y-%m-%d %H:%M:%S' )
69
+ datefmt = '%Y-%m-%d %H:%M:%S' ,
70
+ handlers = [logging .FileHandler ('excel.log' , 'a' , 'utf-8' )])
70
71
_log = logging .getLogger ('app.' + __name__ )
71
72
72
73
73
- def _log_info (msgpre ):
74
- _log .info ('{}---{}' .format (msgpre , datetime .datetime .now ().strftime ('%Y-%m-%d %H:%M:%S' )))
75
-
76
-
77
74
def _connect ():
78
75
config = {
79
76
'user' : 'root' ,
@@ -117,13 +114,16 @@ def parse_sheet(wb, sheet_name, column_num, log_msg):
117
114
break
118
115
row_data .append (cell .value )
119
116
result_list .append (row_data [:])
120
- _log_info (log_msg )
117
+ _log . info (log_msg )
121
118
return result_list
122
119
123
120
121
+ def handle_wrong_line (wrong_line ):
122
+ pass
123
+
124
124
def xlsx_to_table (xlsx_name ):
125
125
conn_ = _connect ()
126
- _log_info ('Excel文件解析start' )
126
+ _log . info ('Excel文件解析start' )
127
127
wb = load_workbook (xlsx_name , read_only = True )
128
128
# 先收集企业资料表
129
129
list1 = parse_sheet (wb , 'customer' , 6 , 'customer表解析end' )
@@ -134,36 +134,44 @@ def xlsx_to_table(xlsx_name):
134
134
# 收集区域表
135
135
list3 = parse_sheet (wb , 'region' , 5 , 'region表解析end' )
136
136
data3 = [(v [0 ], v [1 ], v [2 ], v [3 ], v [4 ]) for v in list3 [1 :]]
137
- _log_info ('Excel文件解析end' )
138
-
137
+ _log .info ('Excel文件解析end' )
138
+ _log .info ('---------------------------分割线--------------------------------' )
139
+ _log .info ('数据库更新start' )
139
140
cursor = conn_ .cursor ()
140
-
141
- _log_info ('插入企业资料start' )
142
- for i , d1 in enumerate (data1 ):
143
- cursor .execute (sql_insert_enterprise , d1 )
144
- if i % 50 == 0 :
145
- conn_ .commit ()
146
- conn_ .commit ()
147
- _log_info ('插入企业资料end' )
148
-
149
- _log_info ('更新企业联系信息start' )
150
- for i , d2 in enumerate (data2 ):
151
- cursor .execute (sql_update_enterprise , d2 )
152
- if i % 50 == 0 :
153
- conn_ .commit ()
154
- conn_ .commit ()
155
- _log_info ('插入企业资料表end' )
156
-
157
- _log_info ('插入区域信息start' )
158
- for i , d3 in enumerate (data3 ):
159
- cursor .execute (sql_insert_region , d3 )
160
- if i % 50 == 0 :
161
- conn_ .commit ()
162
- conn_ .commit ()
163
- _log_info ('插入区域信息end' )
164
-
165
- _log_info ('数据库更新end' )
166
-
141
+ try :
142
+ _log .info ('插入企业资料start' )
143
+ for i , d1 in enumerate (data1 ):
144
+ if len (d1 [1 ]) > 300 and not d1 [2 ]:
145
+ _log .error ('这一行有问题' )
146
+ handle_wrong_line (d1 )
147
+ continue
148
+ cursor .execute (sql_insert_enterprise , d1 )
149
+ if i % 50 == 0 :
150
+ conn_ .commit ()
151
+ conn_ .commit ()
152
+ _log .info ('插入企业资料end' )
153
+
154
+ _log .info ('更新企业联系信息start' )
155
+ for i , d2 in enumerate (data2 ):
156
+ cursor .execute (sql_update_enterprise , d2 )
157
+ if i % 50 == 0 :
158
+ conn_ .commit ()
159
+ conn_ .commit ()
160
+ _log .info ('插入企业资料表end' )
161
+
162
+ _log .info ('插入区域信息start' )
163
+ for i , d3 in enumerate (data3 ):
164
+ cursor .execute (sql_insert_region , d3 )
165
+ if i % 50 == 0 :
166
+ conn_ .commit ()
167
+ conn_ .commit ()
168
+ _log .info ('插入区域信息end' )
169
+
170
+ except :
171
+ logging .exception ('Got exception on db handler' )
172
+ raise
173
+
174
+ _log .info ('数据库更新end' )
167
175
cursor .close ()
168
176
conn_ .close ()
169
177
0 commit comments