VBA, VB.NET For Creo
Creo Parameter <=> PostgreSQL Table #7
ToolBOX01
2025. 1. 4. 16:53
반응형
PostgreSQL Table에 넣는 기능을 생성 합니다.
▷ Date Modified 항목의 데이터베이스 테이블 유형 정의
Windows 파일의 수정 날짜를 PostgreSQL 테이블에 저장하려면 적절한 데이터 유형을 선택해야 합니다. 파일 시스템의 시간 정보는 일반적으로 매우 정밀하며, 특정 시간대를 가지고 있을 수 있습니다. PostgreSQL은 다양한 날짜 및 시간 관련 데이터 유형을 제공 합니다.
PostgreSQL에서 Windows 파일 수정 날짜를 저장하기 위한 일반적인 데이터 유형은 다음과 같습니다.
1. timestamp with time zone:
- 파일 시스템에서 제공하는 정확한 시간과 시간대 정보를 모두 저장하기에 적합합니다.
- 시간대를 명시적으로 저장하므로, 다른 시간대의 데이터와 비교하거나 변환하기 용이합니다.
- 예시: 2023-11-22 15:34:05+09 (한국 표준시)
2. timestamp without time zone:
- 시간대 정보 없이 시간만 저장합니다.
- 특정 시간대를 가정하고 데이터를 저장하는 경우에 사용할 수 있습니다.
- 예시: 2023-11-22 15:34:05
3. date:
- 날짜만 저장하며, 시간 정보는 버립니다.
- 파일이 수정된 날짜만 기록하고 시간은 중요하지 않은 경우에 사용할 수 있습니다.
- 예시: 2023-11-22
어떤 데이터 유형을 선택해야 할까요?
- 정확한 시간과 시간대 정보가 필요한 경우: timestamp with time zone을 사용합니다.
- 시간대 정보는 필요 없지만 시간까지 저장해야 하는 경우: timestamp without time zone을 사용합니다.
- 날짜만 필요한 경우: date를 사용합니다.
▷ 데이터베이스 테이블 정의
▷ 기본 코드
Sub InsertDataToPostgreSQL()
Dim conn As Object
Dim query As String
Dim lastRow As Long
Dim i As Long
Dim PostWS As Worksheet
Set PostWS = ThisWorkbook.Worksheets("File_List")
' PostgreSQL ODBC 연결 문자열
Dim connectionString As String
connectionString = "Driver={PostgreSQL Unicode(x64)};" & _
"Server=localhost;" & _
"Port=5432;" & _
"Database=creomodel01;" & _
"Uid=postgres;" & _
"Pwd=****;"
' ODBC 연결 열기
Set conn = CreateObject("ADODB.Connection")
On Error GoTo ErrorHandler
conn.Open connectionString
' 데이터 삽입
With PostWS
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' A열 기준 마지막 데이터 행 찾기
For i = 1 To lastRow ' 데이터가 2행부터 시작한다고 가정
Dim modelname As String
Dim modeltype As String
Dim modellocation As String
Dim datemodified As Variant
Dim formattedDate As String
' 셀 데이터 읽기
modelname = Replace(.Cells(i + 7, "B").Value, "'", "''") ' 특수문자 이스케이프
modeltype = Replace(.Cells(i + 7, "D").Value, "'", "''")
modellocation = Replace(.Cells(i + 7, "C").Value, "'", "''")
datemodified = Replace(.Cells(i + 7, "E").Value, "'", "''")
' 데이터가 비어 있는 경우 건너뛰기
If IsEmpty(datemodified) Or datemodified = "" Then
Debug.Print "비어 있는 데이터 - 행 번호: " & i + 7
GoTo SkipRow
End If
' 날짜 형식 유효성 검사
If IsDate(datemodified) Then
formattedDate = Format(CDate(datemodified), "yyyy-mm-dd HH:nn:ss")
Else
' 유효하지 않은 데이터가 있는 경우 로그 작성 및 건너뛰기
Debug.Print "유효하지 않은 데이터 - 행 번호: " & i + 7
MsgBox "유효하지 않은 날짜 형식이 발견되었습니다. 행 번호: " & i + 7, vbExclamation
GoTo SkipRow
End If
' SQL 쿼리 작성
query = "INSERT INTO ""DesignTeam"".""modelinfo"" (modelname, modeltype, modellocation, datemodified) " & _
"VALUES ('" & modelname & "', '" & modeltype & "', '" & modellocation & "', '" & formattedDate & "');"
' 디버그용 쿼리 출력
Debug.Print query
' SQL 실행
conn.Execute query
SkipRow:
Next i
End With
' 연결 닫기
conn.Close
Set conn = Nothing
MsgBox "데이터베이스에 데이터가 성공적으로 삽입되었습니다."
Exit Sub
ErrorHandler:
MsgBox "오류 발생: " & Err.Description, vbCritical
If Not conn Is Nothing Then conn.Close
Set conn = Nothing
End Sub
▷ 프로그램 실행 결과
데이터 베이스 입력 프로그램은 AI를 이용하여 작성 하였습니다. PostgreSQL 테이블 구성도 AI의 도움을 받아 작성 하였습니다. 만일 AI의 도움이 없다면 코드를 작성 하는데 수 많은 시간과 노력이 필요 합니다.
by korealionkk@gmail.com