MySQL 数据格式化

文件记录体格式

序号

域   名

长度

位 置

填写说明

1

记录体标记

2

1-2

填“50”

2

话单生成日期

8

3-10

YYYYMMDD

3

SP企业代码

20

11-30

SP企业代码

同文件名中SP企业代码,右对齐,左补空格

4

业务代码

20

31-50

不包含免费业务

左对齐,右补空格

5

计费类型

2

51-52

01:按次

02:包月

03:包天

04:包次

6

资费

5

53-57

单位:分

不保留小数,小数位四舍五入

右对齐,左补0

7

SP分成比例

4

58-61

SP方的分成比例*1000

纯数字,不带小数点和百分符号的整数

右对齐,左补0

取值范围:0000-1000

8

话单条数

11

62-72

成功计费话单条数,不包含免费和“查询”类型的话单

右对齐,左补0

9

计费用户归属省代码

3

73-75

填写计费用户归属省代码,编码规则同对帐责任单位编码

10

信息费总额

12

76-87

单位:分

纯数字,不保留小数,小数位四舍五入

右对齐,左补0

信息费总额 = 话单条数 * 资费

11

保留字段1

31

88-118

填空格

12

回车

1

119

Carriage Return

13

换行

1

120

Line Feed



?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT CONCAT(
         '50' ,
         a.t,
         LPAD( '901077' , 20, ' ' ),
         RPAD(a.serviceid, 20, ' ' ),
         '01' ,
         LPAD( '100' , 5, '0' ),
         LPAD( '850' , 4, '0' ),
         LPAD(a.total, 11, 0),
         '591' ,
         LPAD(a.sumfee, 12, 0),
         REPEAT( ' ' , 31),
         '\r' ,
         '\n'
     )
FROM
(
     SELECT LEFT (log_time, 8) AS t, serviceid, COUNT (*) AS total, SUM (feecode) AS sumfee
     FROM
     mt_log_201107
     WHERE
     spcode = '901077' AND region = '0591' AND feecode > 0
     GROUP BY t, serviceid
) a

生成文件

?
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
mysql -uroot -f spservice -Ne "
SELECT CONCAT(
         '50',
         a.t,
         LPAD('901077', 20, ' '),
         RPAD(a.serviceid, 20, ' '),
         '01',
         LPAD('100', 5, '0'),
         LPAD('850', 4, '0'),
         LPAD(a.total, 11, 0),
         '591',
         LPAD(a.sumfee, 12, 0),
         REPEAT(' ', 31),
         '\r'
     )
FROM
(
     SELECT LEFT(log_time, 8) AS t, serviceid, COUNT(*) AS total, SUM(feecode) AS sumfee
     FROM
     mt_log_201107
     WHERE
     spcode = '901077' AND region = '0591' AND feecode > 0
     GROUP BY t, serviceid
) a
" > spdz_001_90107700000000000000_591_201107.txt &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值