运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Linux下mysql多表数据拆分单表

运维开发网 https://www.qedev.com 2020-07-17 14:42 出处:网络
需求 写代码以前都复制粘贴,菜的一比,第一次碰见一个生活中的实际需求,哎,数据结构和流,线程还是得认真学啊

需求

写代码以前都复制粘贴,菜的一比,第一次碰见一个生活中的实际需求,哎,数据结构和流,线程还是得认真学啊

 

表结构如下

#!/bin/bash

# ** 存储过程名称: ysp.ddl

# ** 功能描述:

# ** 创建者: wx

# ** 创建日期:

# ** 修改者:

# ** 创建日期:

# ** 修改内容:

drop table if exists ods_payment_flow_sf7;

create table ods_payment_flow_sf7(

paymentid               string ,                                     

currency                string ,                                     

paytype                 string ,                                     

recordtype              string ,                                     

appname                 string ,                                     

channelid               string ,                                     

userid                  string ,                                     

merchantaccount         string ,                                     

result                  string ,                                     

amount                  float  ,                                     

createtime              string ,                                     

finishtime              string ,                                     

lastup                  string ,                                     

productorderid          string ,                                     

refundpaymentid         string ,                                     

serviceid               string ,                                     

migupaypaytype          string ,                                     

migupayothertype        string ,                                     

migupayorderid          string ,                                     

strdata                 string ,                                     

resultsource            string ,                                     

portaltype              string ,                                     

ip                      string ,                                     

bizdate                 string ,                                     

importtime              date   

)partitioned by                                                                 

(in_month string)                                                               

row format                         

delimited fields terminated by ‘|‘;

 

drop table if exists ods_payment_flow_sf71;

create table ods_payment_flow_sf71(

paymentid               string ,                                     

currency                string ,                                     

paytype                 string ,                                     

recordtype              string ,                                     

appname                 string ,                                                                      

result                  string ,                                     

amount                  float  ,                                     

createtime              string ,                                     

finishtime              string ,                                     

lastup                  string ,                                     

productorderid          string ,                                                             

)partitioned by                                                                 

(in_month string)                                                               

row format                         

delimited fields terminated by ‘|‘;

        

--货币信息表

drop table if exists dim_scope_currency;

create table dim_scope_currency

(

currency                     string              comment  ‘      货币类型                             ‘ ,  

scope                        string              comment  ‘     scope                      ‘ ,  

status                       string              comment  ‘     状态(0:未启用/1:启用)                             ‘ ,  

remark                       string              comment  ‘       备注                             ‘ , 

)

partitioned by (in_month string)

row format

delimited  fields terminated by ‘|‘;

将上百张表导出单张分表。

代码如下

package other;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

public class SplitWord {

public static void main(String[] args) throws Exception {

splitFileDemo("C:\\Users\\rongx\\Desktop\\ddl-bat\\yp_ods2.ddl",1200);

}

public static void splitFileDemo(String path,int maxline) throws Exception {

FileInputStream fis = new FileInputStream(path);

InputStreamReader isr = new InputStreamReader(fis, "UTF-8");

BufferedReader br = new BufferedReader(isr);

// 获取文件名

/* String fileName = path.substring(0, path.indexOf("."));

// 获取文件后缀

String endName = path.substring(path.lastIndexOf("."));*/

try {

int i = 0;

boolean end = false;//判断文件是否读取完毕

while (true) {

if (end)

break;

StringBuffer sb = new StringBuffer();

String[] arr=null;

/* sb.append(fileName);

sb.append("_data");

sb.append(i);

sb.append(endName);*/

int flag=-1;

if(flag==-1) {

sb.append("E:\\test\\");

sb.append("first");

sb.append(".txt");

}

int count=0;

System.out.println(sb.toString());// 新生成的文件名

// 写入文件

FileOutputStream fos=null;

OutputStreamWriter osw=null;

BufferedWriter bw=null;

if(count==0) {

fos = new FileOutputStream(new File(

sb.toString()),true);

osw = new OutputStreamWriter(fos, "UTF-8");

bw = new BufferedWriter(osw);

bw.flush();

}

String line = "";// 一行行读取文件

int m = 1;

while((line = br.readLine())!=null ){

boolean b = line.contains("drop table");

if(b){

String[] split=null;

if(line.contains("exists")){

split = line.split("exists");

}else{

split = line.split("table");

}

System.out.println(split[1]);

String replace = split[1].replace(";", "").trim();

arr=new String[1];

arr[0]=replace;

}

if( line.startsWith("drop table")){

flag++;

count++;

}

if(count==1){

bw.write(line);

bw.write("\r\n");

}

if(count>1){

sb.setLength(0);

sb.append("E:\\test\\");

sb.append(arr[0]);

sb.append(".txt");

fos = new FileOutputStream(new File(

sb.toString()),true);

osw = new OutputStreamWriter(fos, "UTF-8");

bw = new BufferedWriter(osw);

bw.write(line);

bw.write("\r\n");

bw.flush();

}

if(m>=maxline){

break;

}

m++;

}

if(m<maxline)

end = true;

//关闭写入流

bw.close();

osw.close();

fos.close();

}

} catch (Exception e) {

e.printStackTrace();

} finally {

//关闭输入流

br.close();

isr.close();

fis.close();

}

System.out.println("--- 文件分割完成 ---");

}

}

结果如下

Linux下mysql多表数据拆分单表

 

 

 

Linux下mysql多表数据拆分单表

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号