Skip to content

Commit 4bca2bb

Browse files
committed
Merge remote-tracking branch 'origin/develop' into develop
2 parents aaa4bb3 + 23a6696 commit 4bca2bb

File tree

9 files changed

+1306
-1182
lines changed

9 files changed

+1306
-1182
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@
66
/bin
77
/.vscode
88
/.externalToolBuilders
9-
.history/
10-
.idea/
9+
.history/

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,10 @@ subprojects {
106106
implementation('org.mariadb.jdbc:mariadb-java-client:2.2.3')
107107
implementation('oracle:ojdbc6:11.2.0.3')
108108
implementation('com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre8')
109+
implementation('org.postgresql:postgresql')
109110
implementation('com.h2database:h2')
110111

112+
111113
// web-socket
112114
implementation('org.springframework.boot:spring-boot-starter-websocket')
113115
implementation('org.webjars:sockjs-client:1.1.2')

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
33
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
5-
zipStorePath=wrapper/dists
5+
zipStorePath=wrapper/dists

song7749-module-dbclient/src/main/java/com/song7749/dbclient/domain/Database.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,6 @@ public Database(@Length(max = 120) @NotBlank String host, @Length(max = 120) @No
156156
* @param driver
157157
* @param charset
158158
* @param port
159-
* @param createDate
160-
* @param modifyDate
161159
* @param name
162160
*/
163161
public Database(@Length(max = 120) @NotBlank String host, @Length(max = 120) @NotBlank String hostAlias,

song7749-module-dbclient/src/main/java/com/song7749/dbclient/service/CSVFileDataManagerImpl.java

Lines changed: 83 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -43,92 +43,95 @@ public MessageVo saveData(MultipartFile file, Long databaseId, String tableName,
4343
if(!file.isEmpty()) {
4444
// TODO - 파일을 저장 한 뒤에 비동기로 처리 하는 부분에 대한 고민이 필요하다.
4545
try {
46-
Database database = dbclientManager.getDatabase(databaseId);
47-
ExecuteQueryDto dto = new ExecuteQueryDto(database.getId(), session.getLogin().getLoginId());
48-
dto.setIp("CVS UPLOAD");
49-
dto.setAutoCommit(true);
50-
dto.setHtmlAllow(false);
51-
dto.setUseCache(false);
52-
dto.setUseLimit(false);
53-
54-
String createTableSql = null;
55-
String columnType = null;
56-
String tableCharset = "";
57-
String insertSql = null;
58-
List<String> insertValues = new ArrayList<String>();
59-
60-
// 테이블 사이즈 정의
61-
switch(database.getDriver()) {
62-
case ORACLE :
63-
columnType=" varchar2(2000) ";
64-
break;
65-
case MYSQL :
66-
columnType=" varchar(1000) ";
67-
tableCharset="DEFAULT CHARSET=utf8";
68-
break;
69-
case MARIADB :
70-
columnType=" varchar(1000) ";
71-
tableCharset="DEFAULT CHARSET=utf8";
72-
break;
73-
case MSSQL :
74-
columnType=" varchar(2000) ";
75-
break;
76-
case H2 :
77-
columnType=" varchar(2000) ";
78-
break;
46+
Database database = dbclientManager.getDatabase(databaseId);
47+
ExecuteQueryDto dto = new ExecuteQueryDto(database.getId(), session.getLogin().getLoginId());
48+
dto.setIp("CVS UPLOAD");
49+
dto.setAutoCommit(true);
50+
dto.setHtmlAllow(false);
51+
dto.setUseCache(false);
52+
dto.setUseLimit(false);
53+
54+
String createTableSql = null;
55+
String columnType = null;
56+
String tableCharset = "";
57+
String insertSql = null;
58+
List<String> insertValues = new ArrayList<String>();
59+
60+
// 테이블 사이즈 정의
61+
switch(database.getDriver()) {
62+
case POSTGRESQL:
63+
columnType=" varchar(2000) ";
64+
break;
65+
case ORACLE :
66+
columnType=" varchar2(2000) ";
67+
break;
68+
case MYSQL :
69+
columnType=" varchar(1000) ";
70+
tableCharset="DEFAULT CHARSET=utf8";
71+
break;
72+
case MARIADB :
73+
columnType=" varchar(1000) ";
74+
tableCharset="DEFAULT CHARSET=utf8";
75+
break;
76+
case MSSQL :
77+
columnType=" varchar(2000) ";
78+
break;
79+
case H2 :
80+
columnType=" varchar(2000) ";
81+
break;
7982
default:
8083
columnType=" varchar(1000) ";
8184
break;
82-
}
83-
84-
InputStream is = file.getInputStream();
85-
BufferedReader br = new BufferedReader(new InputStreamReader(is));
86-
String line = null;
87-
String[] column = null;
88-
int loop=0;
89-
while ((line = br.readLine()) != null) {
90-
String[] values = line.split(",");
91-
if(loop==0) {
92-
// 테이블을 생성할 것인지?
93-
if(isCreateTable) {
94-
createTableSql= "create table " + tableName + "( ";
95-
96-
String[] columnDefine = new String[values.length];
97-
for(int i=0; i<values.length;i++) {
98-
columnDefine[i] = values[i].replaceAll("[^A-Za-z0-9]","") + columnType;
99-
}
100-
createTableSql+=String.join(",", columnDefine) + ") " + tableCharset;
101-
logger.trace(format("{}", " CSV create table SQL "),createTableSql);
102-
103-
dto.setQuery(createTableSql);
104-
dbclientManager.executeQuery(dto);
105-
} // 테이블 생성 완료
106-
// insert 하기 위해 insert 구문 생성
107-
insertSql="insert into " + tableName ;
108-
// values column 생성
109-
column= new String[values.length];
85+
}
86+
87+
InputStream is = file.getInputStream();
88+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
89+
String line = null;
90+
String[] column = null;
91+
int loop=0;
92+
while ((line = br.readLine()) != null) {
93+
String[] values = line.split(",");
94+
if(loop==0) {
95+
// 테이블을 생성할 것인지?
96+
if(isCreateTable) {
97+
createTableSql= "create table " + tableName + "( ";
98+
99+
String[] columnDefine = new String[values.length];
110100
for(int i=0; i<values.length;i++) {
111-
column[i] = values[i].replaceAll("[^A-Za-z0-9]","");
101+
columnDefine[i] = values[i].replaceAll("[^A-Za-z0-9]","") + columnType;
112102
}
113-
} else {
114-
// 필드를 기준으로 없는 데이터는 생성하여 넣는다.
115-
String[] insertColumn = new String[values.length];
116-
for(int i=0; i<values.length;i++) {
117-
insertColumn[i] = column[i];
118-
}
119-
insertValues.add(insertSql + " ( " + String.join(",",insertColumn) + " ) " + "values('" + String.join("','",values) + "')");
120-
}
121-
loop++;
122-
}
123-
// insert 작업 시작
124-
count=insertValues.size();
125-
126-
String query="";
127-
for(String insertSQL : insertValues) {
128-
query+=insertSQL+";";
103+
createTableSql+=String.join(",", columnDefine) + ") " + tableCharset;
104+
logger.trace(format("{}", " CSV create table SQL "),createTableSql);
105+
106+
dto.setQuery(createTableSql);
107+
dbclientManager.executeQuery(dto);
108+
} // 테이블 생성 완료
109+
// insert 하기 위해 insert 구문 생성
110+
insertSql="insert into " + tableName ;
111+
// values column 생성
112+
column= new String[values.length];
113+
for(int i=0; i<values.length;i++) {
114+
column[i] = values[i].replaceAll("[^A-Za-z0-9]","");
115+
}
116+
} else {
117+
// 필드를 기준으로 없는 데이터는 생성하여 넣는다.
118+
String[] insertColumn = new String[values.length];
119+
for(int i=0; i<values.length;i++) {
120+
insertColumn[i] = column[i];
121+
}
122+
insertValues.add(insertSql + " ( " + String.join(",",insertColumn) + " ) " + "values('" + String.join("','",values) + "')");
129123
}
130-
dto.setQuery(query);
131-
dbclientManager.executeQuery(dto);
124+
loop++;
125+
}
126+
// insert 작업 시작
127+
count=insertValues.size();
128+
129+
String query="";
130+
for(String insertSQL : insertValues) {
131+
query+=insertSQL+";";
132+
}
133+
dto.setQuery(query);
134+
dbclientManager.executeQuery(dto);
132135

133136
} catch (Exception e) {
134137
throw new IllegalArgumentException("CSV 파일 저장 실패. 파일 내용을 확인해주세요\n" + e.getMessage());

0 commit comments

Comments
 (0)