이 블로그 검색

2022년 12월 2일 금요일

Libreoffice Calc에서 Libreoffice base로 또는 SQL로 데이터 넣는 방법.

복사해서 붙여넣기로 하면서 에러가 나는 경우가 몇번 있었어서, Sql query 만들어서 하는 방법을 택하였다. SQL query를 만들 때 가장 문제는 문자형의 경우는 "" 로 싸거나, ''로 싸거나 하는 경우가 많다는거다, 그래서 필요한 함수를 먼더 만들어야한다.
도구 >> 매크로 >> edit 매크로
다음과 같은 Basic 함수를 만들어주자.
function dquoted(Optional x)
  Dim iRow As Integer
  Dim iCol As Integer
  DIM resultString As String 
  resultString = ""
 
  If NOT IsMissing(x) Then
    If NOT IsArray(x) Then
resultString =  Chr(34) & x &Chr(34)
Else
      For iRow = LBound(x, 1) To UBound(x, 1)
        For iCol = LBound(x, 2) To UBound(x, 2)
          resultString = resultString &", "  & Chr(34) & x(iRow,iCol) &Chr(34)
        Next
      Next
    End If
  End If
  dquoted = resultString
end function
여러칼럼의 문자 칼럼이 있다면, 쓸 수 있도록 해주었다. 그 다음 부터야 간단하다. 앞 셀에는 insert into tablename ( 를 넣고, 다음 칼럼이 숫자면 그냥 =해당 데이터로 그대로 복사해준다. 문자열로 이루어진 칼럼은 위 함수를 사용해서 =dquoted( 해당 문자열 또는 문자열 어레이) 를 해준다. 이런 식의 반복 후 마지막 데이터 칼럼 뒤에 ); 을 넣어준다. 그 다음에 =concat( insert into 셀부터 ); 까지 선택 그 다음쿼리를 다 선택후 끌어내려서 채우기를 한 후, concat 셀을 모두 선택한 후, base에 가서 sql 명령어 넣기를 하면 자료가 들어간다.

가장 많이 본 글