"_"
Sub createData()
'테이블 리스트 파일명
Dim tableListFileName As String
'테이블 리스트 시트명
Dim tableListSheetName As String
'스키마명
Dim schema As String
'찾을 테이블 이름
Dim tableName As String
'찾을 테이블 이름 (영문)
Dim tableName_E As String
'테이블정의서 파일명
Dim tableInfoFileName As String
'테이블 리스트의 이름 시작열
Dim startTableName As String
'테이블 리스트의 이름(영문) 시작열
Dim startTableName_E As String
'테이블 리스트의 시작 행
Dim tblListStartRow As Integer
'테이블정의서의 컬럼 시작열
Dim startColName As String
'테이블정의서의 컬럼(영문) 시작열
Dim startColName_E As String
'테이블정의서의 데이터형 시작열
Dim startDataType As String
'테이블정의서의 기본키 시작열
Dim pk As String
'테이블정의서의 notNull 시작열
Dim notNull As String
'테이블정의서의 시작행
Dim tblInfoStartRow As Integer
'필요한 데이터의 컬럼명
Dim needDataColName As String
'필요한 데이터의 값
Dim needDataResult As String
'루프수
Dim row As Integer
Dim index As Integer
Dim resultRow As Integer
'참 거짓
Dim isName As Boolean
'Work
Dim work_TableName As String
Dim work_TableName_E As String
Dim work_colName As String
Dim work_conName_E As String
Dim work_DataType As String
Dim work_Pk As String
Dim work_Not_Null As String
Sheets("Sheet2").Cells.Clear
Sheets("Sheet3").Cells.Clear
tableListFileName = Range("A2").Value
tableListSheetName = Range("B2").Value
schema = Range("E2").Value
tableName = Range("C2").Value
tableName_E = Range("D2").Value
tableInfoFileName = Range("A5").Value
startTableName = Range("A8").Value
startTableName_E = Range("B8").Value
tblListStartRow = Range("C8").Value
startColName = Range("A11").Value
startColName_E = Range("B11").Value
startDataType = Range("C11").Value
pk = Range("D11").Value
notNull = Range("E11").Value
tblInfoStartRow = Range("F11").Value
tmp = Range("I3").Value
If Not tmp = "" Then
tmp = Range("I4").Value
If Not tmp = "" Then
resultRow = Range("I3", Range("I3").End(xlDown)).Rows.Count
Else
resultRow = 1
End If
Else
resultRow = 0
End If
MsgBox resultRow
'테이블 리스트 파일 전환
Workbooks(tableListFileName).Activate
'테이블 리스트 시트 전환
Worksheets(tableListSheetName).Activate
If Not tableName = "" Then
isName = True
row = Range(startTableName & tblListStartRow, Range(startTableName & tblListStartRow).End(xlDown)).Rows.Count
ElseIf Not tableName_E = "" Then
isName = False
row = Range(startTableName_E & tblListStartRow, Range(startTableName_E & tblListStartRow).End(xlDown)).Rows.Count
Else
MsgBox "테이블명을 입력해 주세요"
End If
'원하는 테이블을 찾는 반복문
For i = 0 To row
'테이블명이 있을 경우
If isName = True Then
work_TableName = Cells(i + tblListStartRow, startTableName).Value
If work_TableName = tableName Then
tableName_E = Cells(i + tblListStartRow, startTableName_E).Value
End If
'테이블명이 없고 테이블영문명이 있을 경우
ElseIf isName = False Then
work_TableName_E = Cells(i + tblListStartRow, startTableName_E).Value
If work_TableName_E = tableName_E Then
tableName = Cells(i + tblListStartRow, startTableName).Value
End If
End If
Next
'Sheet2 전환 후 테이블명 입력
Workbooks("Macro.xlsm").Activate
Worksheets("Sheet2").Activate
Range("A1").Value = tableName
Range("B1").Value = tableName_E
Range("C1").Value = schema
'테이블 리스트 파일 전환
Workbooks(tableInfoFileName).Activate
'테이블 리스트 시트 전환
Worksheets(tableName).Activate
'컬럼갯수 취득
row = Range(startColName & tblInfoStartRow, Range(startColName & tblInfoStartRow).End(xlDown)).Rows.Count
index = 1
For i = 0 To row - 1
'테이블정의서 파일 전환
Workbooks(tableInfoFileName).Activate
'테이블정의서 시트 전환
Worksheets(tableName).Activate
work_colName = Cells(i + tblInfoStartRow, startColName).Value
work_conName_E = Cells(i + tblInfoStartRow, startColName_E).Value
work_DataType = Cells(i + tblInfoStartRow, startDataType).Value
work_Pk = Cells(i + tblInfoStartRow, pk).Value
work_Not_Null = Cells(i + tblInfoStartRow, notNull).Value
'work 파일 전환
Workbooks("Macro.xlsm").Activate
'work 시트 전환
Worksheets("Sheet2").Activate
Cells("2", index).Value = work_Not_Null
Cells("3", index).Value = work_DataType
Cells("4", index).Value = work_colName
Cells("5", index).Value = work_conName_E
If Not work_Pk = "" Then
Cells("4", index).Font.Color = RGB(255, 0, 0)
End If
'Data 삽입
If Not work_Not_Null = "" Then
'타입이 DATE일 경우
If work_DataType = "DATE" Then
Cells("6", index).Value = "2020-05-15"
'타입이 TIMESTAMP일 경우
ElseIf work_DataType = "TIMESTAMP" Then
Cells("6", index).Value = "2020-05-15"
'나머지일 경우
Else
Cells("6", index).Value = 1
End If
End If
If Not resultRow = 0 Then
For Z = 3 To resultRow + 2
needDataColName = Worksheets("Sheet1").Cells(Z, "I").Value
needDataResult = Worksheets("Sheet1").Cells(Z, "J").Value
If needDataColName = work_colName Then
Worksheets("Sheet2").Cells("6", index).Value = needDataResult
End If
Next
End If
index = index + 1
Next
End Sub
Sub createSQL()
'NotNull
Dim notNull As String
'데이터 타입
Dim dateType As String
'스키마 명
Dim schema As String
'테이블 이름
Dim tableName As String
'컬럼명
Dim colName As String
'컬럼 집합
Dim arrColName As String
'데이터
Dim data As String
'등록할 데이터 집합
Dim arrData As String
'데이터 갯수
Dim dataRow As String
'컬럼 갯수
Dim colCnt As String
'SQL
Dim sql As String
'출력 SQL갯수
Dim index As Integer
'work
Dim workSqlList As String
Dim workSqlListRow As Integer
'work 시트 전환
Worksheets("Sheet3").Cells.Clear
Worksheets("Sheet2").Activate
'컬럼 갯수 취득
colCnt = Range("A5", Range("A5").End(xlToRight)).Columns.Count
'데이터 갯수 취득
If Not Range("A7").Value = "" Then
dataRow = Range("A6", Range("A6").End(xlDown)).Rows.Count
ElseIf Not Range("A6").Value = "" Then
dataRow = 1
Else
MsgBox "데이터를 설정해 주세요"
Exit Sub
End If
schema = Range("C1")
tableName = Range("B1")
sql = "INSERT INTO " + schema + tableName + "("
'SQL작성 컬럼 추가
For i = 1 To colCnt
colName = Cells("5", i).Value
If i = colCnt Then
arrColName = arrColName + colName
Else
arrColName = arrColName + colName & ","
End If
Next
sql = sql + arrColName + ") VALUES ("
index = 1
'SQL작성 데이터 추가
For i = 6 To dataRow + 5
arrData = ""
For k = 1 To colCnt
'NotNull확인
notNull = Cells("2", k).Value
'테이터 타입
dataType = Cells(3, k).Value
'데이터 값
data = Cells(i, k).Value
'NotNull일 경우
If Not notNull = "" Then
'VARCHAR일 경우 '' 를 추가
If dataType = "VARCHAR" Then
data = "'" + data + "'"
'TIMESTAMP일 경우 ''를 추가
ElseIf dataType = "TIMESTAMP" Then
data = "'" + data + "'"
'DATE일 경우 ''를 추가
ElseIf dataType = "DATE" Then
data = "'" + data + "'"
End If
Else
If data = "" Then
'null가능일 경우 null를 추가
data = "null"
End If
End If
'VALUES값 넣기
If k = colCnt Then
arrData = arrData + data
Else
arrData = arrData + data + ","
End If
Next
arrData = arrData + ")"
'SQL 출력
Worksheets("Sheet3").Cells(index, "A").Value = sql & arrData
index = index + 1
Next
Worksheets("Sheet3").Activate
MsgBox Str(index - 1) + "건"
target = "A1:A" & index - 1
Range(target).Copy
Worksheets("Sheet4").Activate
tmp = Range("A1").Value
If Not tmp = "" Then
tmp = Worksheets("Sheet4").Range("A2").Value
If Not tmp = "" Then
workSqlListRow = Range("A1", Range("A1").End(xlDown)).Rows.Count
Else
workSqlListRow = 1
End If
Else
workSqlListRow = 0
End If
Range("A" & workSqlListRow + 1).PasteSpecial
Worksheets("Sheet3").Activate
End Sub
Sub DownLoadSQL()
'CreateFile
Set TF = CreateObject("scripting.filesystemobject")
Set TFT = TF.Createtextfile("C:\Users\kangin\Desktop\WorkSpace\excel\createTestData\SQL\SQL.txt")
'SQL List
Dim workSqlListRow As Integer
'Sheet 전환
Worksheets("Sheet4").Activate
'SQL확인
tmp = Range("A1").Value
If Not tmp = "" Then
workSqlListRow = Range("A1", Range("A1").End(xlDown)).Rows.Count
Else
workSqlListRow = 0
End If
'0개일 경우
If workSqlListRow = 0 Then
MsgBox "SQL이 없습니다"
Exit Sub
End If
'text 파일에 SQL작성
For i = 1 To workSqlListRow
TFT.WriteLine Cells(i, "A").Value
Next
MsgBox "SQL TextFiles이 생성되었습니다"
End Sub