Compare commits
14 Commits
main
...
feature-从t
Author | SHA1 | Date | |
---|---|---|---|
911f6ce6b9 | |||
565b575b6a | |||
2ec4f9186d | |||
455b96415f | |||
07ace8a30b | |||
f5c01bc8b8 | |||
97f518ad43 | |||
b0d6d59699 | |||
1f371d1e5c | |||
e506cbb60c | |||
890c5097e3 | |||
6aab32adf1 | |||
986d6b02b6 | |||
e481303a0c |
13
README.md
13
README.md
@@ -1,3 +1,12 @@
|
||||
# east-utils
|
||||
<h1 style="font-size:4rem;text-align:center;color:red;" align="center" title >EAST 数据处理工具</h1>
|
||||
|
||||
EAST数据处理工具。
|
||||
<p align="center"></p>
|
||||
|
||||
# 概述
|
||||
|
||||
这是产险厦门分公司用于处理EAST数据的工具。
|
||||
|
||||
## 功能描述
|
||||
|
||||
- 拆分过大的txt文件;
|
||||
- 文件转换成excel表格用于核对;
|
25
code/east-datafile-utils/.editorconfig
Normal file
25
code/east-datafile-utils/.editorconfig
Normal file
@@ -0,0 +1,25 @@
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.js]
|
||||
indent_size = 4
|
||||
|
||||
[*.ts]
|
||||
indent_size = 4
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[*.java]
|
||||
indent_size = 4
|
||||
|
||||
[*.xml]
|
||||
indent_size = 2
|
@@ -1,12 +1,3 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2025-03-16 00:35:09
|
||||
* @LastEditors: Kane
|
||||
* @FilePath: /cpicxim-huixiabao/.vscode/fileheader.template.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
*/
|
||||
/**
|
||||
* This file is generated by VSCode extension: Fileheader Pro
|
||||
*/
|
||||
@@ -26,10 +17,10 @@
|
||||
* @property {string} dirPath the directory path, relative to project root with POSIX path separator
|
||||
* @property {string} fileName filename with extension
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {string | number | null | undefined | Template | boolean} TemplateInterpolation NOTE: boolean or falsy value will render empty string
|
||||
*
|
||||
*
|
||||
* @typedef {{ strings: TemplateStringsArray; interpolations: TemplateInterpolation[]; }} Template
|
||||
* @typedef {(strings: TemplateStringsArray, ...values: any[]) => string} ITemplateFunction
|
||||
*
|
||||
@@ -71,14 +62,14 @@ class CustomLanguageProvider extends globalThis.FileheaderLanguageProvider {
|
||||
// prettier-ignore
|
||||
return tpl
|
||||
`/**
|
||||
* @Author: ${variables.authorName} <${variables.authorEmail}>
|
||||
* @Date: ${variables.birthtime}
|
||||
* @LastEditors: ${variables.userName}
|
||||
* @LastModified: ${variables.mtime}
|
||||
* @FilePath: ${variables.filePath}
|
||||
* @Author: ${variables.authorName} <${variables.authorEmail}>
|
||||
* @Date: ${variables.birthtime}
|
||||
* @LastEditors: ${variables.userName}
|
||||
* @LastModified: ${variables.mtime}
|
||||
* @FilePath: ${variables.filePath}
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2025} by Kane All rights reserved
|
||||
*
|
||||
* Copyright (c) ${2025} by Kane All rights reserved
|
||||
*/`;
|
||||
}
|
||||
}
|
30
code/east-datafile-utils/.vscode/launch.json
vendored
Normal file
30
code/east-datafile-utils/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"type": "java",
|
||||
"name": "Current File",
|
||||
"request": "launch",
|
||||
"mainClass": "${file}"
|
||||
},
|
||||
{
|
||||
"type": "java",
|
||||
"name": "App",
|
||||
"request": "launch",
|
||||
"mainClass": "com.cpic.xim.App",
|
||||
"projectName": "east-utils"
|
||||
},
|
||||
{
|
||||
"type": "java",
|
||||
"name": "Debug",
|
||||
"request": "launch",
|
||||
"mainClass": "com.cpic.xim.App",
|
||||
"projectName": "east-utils",
|
||||
"args": ["-Xms512m", "-Xmx8g"]
|
||||
}
|
||||
]
|
||||
}
|
@@ -8,15 +8,15 @@
|
||||
<artifactId>east-utils</artifactId>
|
||||
<version>20250808.1921</version>
|
||||
|
||||
<name>east</name>
|
||||
<!-- FIXME change it to the project's website -->
|
||||
<url>http://www.example.com</url>
|
||||
<name>east-utils</name>
|
||||
<url>http://www.cpic.com.cn</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.release>17</maven.compiler.release>
|
||||
<log4j.version>2.24.3</log4j.version>
|
||||
<log4j.version>2.25.1</log4j.version>
|
||||
<jackson.version>2.19.2</jackson.version>
|
||||
<!-- <jackson.version>LATEST</jackson.version> -->
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
@@ -43,6 +43,7 @@
|
||||
<artifactId>junit-jupiter-params</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- POI -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
@@ -64,7 +65,8 @@
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<!--jackson-->
|
||||
|
||||
<!--jackson-->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
@@ -82,6 +84,23 @@
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- log-4j -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>${log4j.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-slf4j2-impl</artifactId>
|
||||
<version>${log4j.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>${log4j.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@@ -149,4 +168,4 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
</project>
|
13
code/east-datafile-utils/readme.md
Normal file
13
code/east-datafile-utils/readme.md
Normal file
@@ -0,0 +1,13 @@
|
||||
<h1 style="font-size:4rem;text-align:center;color:red;" align="center" title >EAST 数据处理工具</h1>
|
||||
|
||||
|
||||
|
||||
# 概述
|
||||
|
||||
这是产险厦门分公司用于处理EAST数据的工具。
|
||||
|
||||
## 功能描述
|
||||
|
||||
- 拆分过大的txt文件;
|
||||
- 文件转换成excel表格用于核对;
|
||||
|
@@ -5,16 +5,14 @@
|
||||
* @LastModified: 2025-08-08 19:05:06
|
||||
* @FilePath: src/main/java/com/cpic/xim/App.java
|
||||
* @Description:
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim;
|
||||
|
||||
import java.io.File;
|
||||
import com.cpic.xim.east.utils.DataFileSpliter;
|
||||
|
||||
/**
|
||||
* Hello world!
|
||||
*/
|
||||
public class App
|
||||
{
|
||||
private static final int MAX_LINE_COUNT_PER_FILE = 250000;
|
||||
@@ -24,9 +22,16 @@ public class App
|
||||
{
|
||||
String fileNameBDJBXXB = "L:\\east\\MD5_BDJCXX_BDJBXXB_RESULT_3080100.txt";
|
||||
|
||||
com.cpic.xim.east.utils.DataFileSpliter.splitFile( new File( fileNameBDJBXXB ),
|
||||
MAX_LINE_COUNT_PER_FILE,
|
||||
TITLE_BDJBXXB );
|
||||
try
|
||||
{
|
||||
DataFileSpliter.splitFile( new File( fileNameBDJBXXB ),
|
||||
MAX_LINE_COUNT_PER_FILE,
|
||||
TITLE_BDJBXXB );
|
||||
}
|
||||
catch ( Exception error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
}
|
||||
|
||||
System.out.println( "拆完了!" );
|
||||
}
|
@@ -0,0 +1,140 @@
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2025-08-09 01:09:26
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-08-11 15:54:24
|
||||
* @FilePath: src/main/java/com/cpic/xim/east/utils/DataFileConverter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.east.utils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class DataFileConverter
|
||||
{
|
||||
private static Logger logger = LoggerFactory.getLogger( DataFileConverter.class );
|
||||
|
||||
/**
|
||||
* 将txt格式的east数据文件,转换成excel文件。
|
||||
* 逐行转换,每行数据用split拆分。
|
||||
* 使用SXSSFWorkbook格式的对象。用于转换超大规模excel文件。
|
||||
*
|
||||
* @param eastDataFilePath east数据文件路径
|
||||
* @param xlsxFilePath 输出的excel文件路径
|
||||
* @param spliterString 数据单元正则表达式分隔符
|
||||
* @param sheetName sheet名称
|
||||
* @throws FileNotFoundException
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void convertEASTDataFileToXLSX(
|
||||
String eastDataFilePath,
|
||||
String xlsxFilePath,
|
||||
String spliterString,
|
||||
String sheetName
|
||||
)
|
||||
throws FileNotFoundException,
|
||||
IOException
|
||||
{
|
||||
FileOutputStream xlsxFile = null;
|
||||
BufferedReader reader = null;
|
||||
Workbook workbook = null;
|
||||
Sheet sheet = null;
|
||||
|
||||
String line;
|
||||
int rowIndex = 0;
|
||||
|
||||
try
|
||||
{
|
||||
reader = new BufferedReader( new FileReader( eastDataFilePath ) );
|
||||
}
|
||||
catch ( IOException error )
|
||||
{
|
||||
logger.error( "打开文件" + eastDataFilePath + "失败!!!!" );
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
workbook = new SXSSFWorkbook();
|
||||
sheet = workbook.createSheet( sheetName );
|
||||
|
||||
while ( (line = reader.readLine()) != null )
|
||||
{
|
||||
String[] rowData = line.split( spliterString );
|
||||
Row row = sheet.createRow( rowIndex );
|
||||
int cellIndex = 0;
|
||||
|
||||
for ( String cellData : rowData )
|
||||
{
|
||||
row.createCell( cellIndex++ ).setCellValue( cellData );
|
||||
}
|
||||
|
||||
rowIndex++;
|
||||
}
|
||||
|
||||
xlsxFile = new FileOutputStream( xlsxFilePath );
|
||||
workbook.write( xlsxFile );
|
||||
|
||||
xlsxFile.close();
|
||||
workbook.close();
|
||||
reader.close();
|
||||
}
|
||||
catch ( IOException error )
|
||||
{
|
||||
throw error;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if ( xlsxFile != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
xlsxFile.close();
|
||||
}
|
||||
catch ( IOException error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if ( workbook != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
workbook.close();
|
||||
}
|
||||
catch ( IOException error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if ( reader != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch ( IOException error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -1,11 +1,11 @@
|
||||
/**
|
||||
* @Author: Kane Wang <wangkane@qq.com>
|
||||
* @Date: 2025-08-08 17:23:44
|
||||
* @Date: 2025-08-09 00:10:12
|
||||
* @LastEditors: Kane Wang
|
||||
* @LastModified: 2025-08-08 17:25:07
|
||||
* @LastModified: 2025-08-09 12:06:41
|
||||
* @FilePath: src/main/java/com/cpic/xim/east/utils/DataFileSpliter.java
|
||||
* @Description:
|
||||
*
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) 2025 by Kane All rights reserved
|
||||
*/
|
||||
package com.cpic.xim.east.utils;
|
||||
@@ -13,9 +13,12 @@ package com.cpic.xim.east.utils;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Kane
|
||||
@@ -23,8 +26,14 @@ import java.io.IOException;
|
||||
*/
|
||||
public class DataFileSpliter
|
||||
{
|
||||
private static Logger logger = LoggerFactory.getLogger( DataFileSpliter.class );
|
||||
|
||||
public static void splitFile( File inputFile, int lineCountPerFile , String titleString )
|
||||
public static void splitFile( File inputFile,
|
||||
int lineCountPerFile,
|
||||
String titleString
|
||||
)
|
||||
throws FileNotFoundException,
|
||||
IOException
|
||||
{
|
||||
try (
|
||||
BufferedReader reader = new BufferedReader( new FileReader( inputFile ) )
|
||||
@@ -45,7 +54,7 @@ public class DataFileSpliter
|
||||
fileCount++;
|
||||
lineCount = 0;
|
||||
|
||||
writer = createWriterForFile( inputFile, fileCount );
|
||||
writer = createWriterForFile( inputFile, fileCount );
|
||||
}
|
||||
|
||||
// 如果是第一行,则写入标题
|
||||
@@ -61,9 +70,11 @@ public class DataFileSpliter
|
||||
}
|
||||
writer.close();
|
||||
}
|
||||
catch ( IOException e )
|
||||
catch ( IOException error )
|
||||
{
|
||||
e.printStackTrace();
|
||||
logger.error( "出现异常" + error.getMessage() );
|
||||
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +84,7 @@ public class DataFileSpliter
|
||||
{
|
||||
String outputFileName = String.format( "%s_part%d.txt", inputFile.getName(), fileCount );
|
||||
FileWriter fileWriter = new FileWriter( new File( inputFile.getParent(), outputFileName ) );
|
||||
|
||||
|
||||
return new BufferedWriter( fileWriter );
|
||||
}
|
||||
catch ( IOException e )
|
3
code/east-datafile-utils/src/main/resources/config.json
Normal file
3
code/east-datafile-utils/src/main/resources/config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"version": "1.0"
|
||||
}
|
40
code/east-datafile-utils/src/main/resources/log4j2.xml
Normal file
40
code/east-datafile-utils/src/main/resources/log4j2.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<Configuration status="WARN" monitorInterval="300">
|
||||
<Appenders>
|
||||
<Console name="Console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" />
|
||||
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
|
||||
</Console>
|
||||
<RollingFile name="rolling_file_win"
|
||||
filePattern="./logs/$${date:yyyy-MM}/huixiabao-%d{MM-dd-yyyy}-%i.log.gz">
|
||||
<PatternLayout>
|
||||
<Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
|
||||
</PatternLayout>
|
||||
<Policies>
|
||||
<TimeBasedTriggeringPolicy interval="1" />
|
||||
<SizeBasedTriggeringPolicy size="20MB" />
|
||||
<DefaultRolloverStrategy max="20" />
|
||||
</Policies>
|
||||
</RollingFile>
|
||||
<RollingFile name="rolling_file_linux"
|
||||
filePattern="/logs/east/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
|
||||
<PatternLayout>
|
||||
<Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern>
|
||||
</PatternLayout>
|
||||
<Policies>
|
||||
<TimeBasedTriggeringPolicy interval="1" />
|
||||
<SizeBasedTriggeringPolicy size="20MB" />
|
||||
<DefaultRolloverStrategy max="20" />
|
||||
</Policies>
|
||||
</RollingFile>
|
||||
</Appenders>
|
||||
<Loggers>
|
||||
<!-- <Logger name="mylog" level="info">
|
||||
<AppenderRef ref="rolling_file" />
|
||||
</Logger> -->
|
||||
<Root level="debug">
|
||||
<AppenderRef ref="rolling_file_linux" />
|
||||
<AppenderRef ref="rolling_file_win" />
|
||||
<AppenderRef ref="Console" />
|
||||
</Root>
|
||||
</Loggers>
|
||||
</Configuration>
|
68
文档/EAST表结构/dbload_dm3.txt
Normal file
68
文档/EAST表结构/dbload_dm3.txt
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
|
||||
dir="/cpic/cpicapp/east"
|
||||
dmdir="/cpic/cpicapp/dm3/bin"
|
||||
cd $dir
|
||||
|
||||
if [ $# -ne 1 ];then
|
||||
cat << EOF
|
||||
Usage: $0 dirname
|
||||
dirname
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
dirname=$1
|
||||
|
||||
|
||||
list=`ls ${dirname}/*.txt`
|
||||
for line in $list
|
||||
##cat table.list|while read line
|
||||
do
|
||||
filename=${line#*/}
|
||||
tabname="EAST_"${filename%-*}
|
||||
echo $tabname
|
||||
|
||||
##将表名转换为小写
|
||||
c_tabname=`echo "${tabname}"|tr [A-Z] [a-z]`
|
||||
|
||||
##c_tabname=`echo "${tabname}"`
|
||||
echo $c_tabname
|
||||
|
||||
|
||||
result=`${dmdir}/disql ****/'"********"'@*******:***** << !
|
||||
set heading off
|
||||
set feedback off
|
||||
set pagesize 0
|
||||
set verify off
|
||||
set echo off
|
||||
set lineshow off
|
||||
SET TIMING off
|
||||
|
||||
select '|'||trim(LISTAGG(column_name,',')within group(order by column_id))||'|' from (select column_name||'#'||case when data_type in('CHAR','VARCHAR2','NVARCHAR2','VARCHAR','TEXT') AND DATA_LENGTH > 255 THEN 'CHAR(8000)' ELSE '' END column_name,column_id from user_tab_columns ta where table_name = upper('${tabname}'));
|
||||
|
||||
exit
|
||||
!`
|
||||
|
||||
echo $result>clumns01.txt
|
||||
result2=`cut -d$'|' -f2 clumns01.txt`
|
||||
echo $result2>clumns01.txt
|
||||
sed s/[[:space:]]//g clumns01.txt>clumns.txt
|
||||
sed -i 's/#/ /g' clumns.txt
|
||||
|
||||
##拼装control文件
|
||||
echo "load data">tmp.ctl
|
||||
echo "infile '${dir}/import20250630/${filename}'">>tmp.ctl
|
||||
##echo "infile '${dir}/import20250228/${c_tabname}.txt'">>tmp.ctl
|
||||
echo "badfile '${dir}/bad/${c_tabname}.bad'">>tmp.ctl
|
||||
echo "into table ${c_tabname}">>tmp.ctl
|
||||
echo "fields terminated by ' '" >> tmp.ctl
|
||||
##echo "fields ' '">>tmp.ctl
|
||||
echo "(">>tmp.ctl
|
||||
cat clumns.txt>>tmp.ctl
|
||||
echo ")">>tmp.ctl
|
||||
|
||||
${dmdir}/dmfldr userid=****/'"*********"'@********:***** control=\'${dir}/tmp.ctl\' null_mode=true
|
||||
|
||||
done
|
||||
|
3306
文档/EAST表结构/east_table_create_sql.sql
Normal file
3306
文档/EAST表结构/east_table_create_sql.sql
Normal file
File diff suppressed because it is too large
Load Diff
BIN
文档/EAST表结构/规范附件3:保险业监管数据标准化规范(财产保险公司版)数据结构一览表.xlsx
Normal file
BIN
文档/EAST表结构/规范附件3:保险业监管数据标准化规范(财产保险公司版)数据结构一览表.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user