본문 바로가기

mySql CLI 에서 쿼리 결과 출력시 레이아웃(박싱)을 없애는 방법 좋은 Practice 는 아니겠지만, 간단한 DB 조회를 위해서 mysql 이 제공하는 CLI 를 이용하는 경우가 다들 있으실 겁니다.데이터를 조회 및 확인만 화면으로 한다면 특별히 문제 없겠지만 가끔을 엑셀 등의 도구로 데이터를 옮겨야 할 경우가 생기곤 합니다.mysql CLI 의 기본 쿼리 결과는 결과를 테이블, 레이아웃, 혹은 박싱이라 불리우는 형태로 표현해 줍니다.보기에는 좋지만 다른 도구에 붙여 넣기에는 영~ 불편한게 사실이죠 보기 좋은 떡이 먹기 좋다는 옛말이 있지만 이 박스를 좀 없애고 싶은 분들도 많으실겁니다.박스를 없애려면 mysql CLI 구동시 몇 가지 옵션을 추가해 주셔야 합니다. $ mysql -u user_name_place -p -s -rEnter password:mysql>m..
mysql 8.x 인스턴스 연결시 발생하는 this authentication plugin is not supported 에러 mysql 8.x 이전 버전에서는 발생하는 이슈인지 조사를 해보진 못했습니다만최소한 mysql 8.x 버전에서는 이 문제가 발생할 수 있는 상태입니다. 제 경우 Grafana 에서 mysql 데이터 소스를 만들던 도중 에러를 만났고소개해 드리는 링크에서 나온 것처럼 Go 로 만든 배치 스크립트에서는동일한 이슈가 생기지 않았습니다. // 에러메세지this authentication plugin is not supported 문제는 강화된 보안 체계로 인해 외부 어플리케이션에서 사용되는 mysql 관련 모듈이mysql 8.x 의 기본 값으로 설정된 패스워드 보안 알고리즘을 맞추지 못해서 발생하는 문제로 보입니다. 해결 방법은 여러가지가 있지만 mysql 인스턴스 전체에 영향을 주지 않는 방법으로사용자 단위로..
XML 을 이용한 MS-SQL 대용량 데이터의 삽입 얼마전에 올렸던 포스팅에서 OpenXML을 이용하여 대용량 XML 형태 데이터를 MS-SQL 데이터베이스에 효과적으로 넣는 방법에 대해서 공유를 했었다. 하지만 OpenXML 을 이용하는 방법은 조금 까다로운 감이 없지 않고 구문이 복잡해져서 복잡한 XML 데이터를 핸들링 할때는 불편한게 사실이다. 오늘 소개해 드리는 방법은 이보다 더 간단한 방식으로 SQL Server 2005, 2008 등에서 XML 에 대한 자체적인 지원을 시작하면서 사용 가능해진 방법이다. OpenXML 을 이용하는 방법보다 단순하게 쿼리를 만들 수 있는 장점이 있는 반면 OpenXML 이 상당히 구체적으로 노드와 어트리뷰트, 값을 지정해서 뽑아내는 것보다 명확하지 않아 보일 수 있는 단점도 있다. DECLARE @x XML SE..
OpenXML 을 이용한 MS-SQL 대용량 데이터 삽입 데이터베이스 서버나 개발시 로컬 인스턴스 환경에서 유용하게 사용될 수 있는 것이 벌크 인서트(Bulk Insert) 기능이다. 샘플 데이터 라던가 코드성 데이터들을 한번에 쉽게 테이블에 넣을 수 있는 방법으로 많이 애용되고 있다. 그런데 벌크 인서트는 로컬의 파일 시스템에 저장된 텍스트 파일을 이용하는 방식이기 때문에 리모트에서 동작하는 ASP.NET 어플리케이션과 같은 클라이언트는 사용할 수 없는 기술이다. 그렇다면 대용량의 데이터를 한번에 넣을 수 있는 좋은 방법은 없을까? 수백건의 데이터를 한번에 테이블에 넣는 것과 같은 작업을 insert 문을 이용해 행의 갯수만큼 돌린다면 트랜잭션의 관리를 포함하여 도저히 감당하기 힘든 느린 속도를 경험하게 될 것이다. 이럴 때 유용하게 사용할 수 있는 것이 바..
NoSQL 에 대한 블로그 포스트 모음 요즘 NoSQL 에 대한 관심이 무척 높다. 실시간으로 쏟아지는 데이터를 처리하기 위해서 기존 RDBMS 는 "전혀" 적합하지 않다는 것이 많은 사람들의 지론이다. 그래서 등장하는 많은 대체제 중에 NoSQL 은 이름에서 부터 이미 압박이 심하다. NoSQL 자체가 제품 이름은 아니고 일종의 새로운 DB 형태를 일컫는 말이다. NoSQL 제품으로 Google 의 BigTable, Amazon의 Dynamo 와 같은 것들이 유명하다. 자세한 내용은 천천히 시간을 두고 살펴보기 위해 일단 손에 걸린(?) 것들을 링크만 정리해 둬본다. - Wikipedia 에 정의된 NoSQL : http://en.wikipedia.org/wiki/NoSQL Outsider 님의 NoSQL 관련 포스팅 1. NoSQL에 대해..
Stored Procedure 에서 에러 처리하는 패턴 비지니스 로직에서 데이터베이스 관련 구문을 사용하지 않기 위해 종종 Stored Procedure 로 많은 로직을 옮기곤 합니다. View 와 Logic 을 분리한다는 차원 이외에도 보안적인 측면이나 불필요한 에러를 막기 위한 것 이외에도 Strongly Typed 프로그래밍의 명확한 적용을 위해서라도 유용한 방법입니다. SP 를 사용하는 몇 안되는 단점 중 하나가 에러처리 부분이 아닐까 싶습니다. NoPD 군은 그동안 SQL 구문 날코딩을 사랑하다 최근 SP 로 로직을 모두 옮기어 조그만 프로젝트를 하나 하고 있는데, 여기저기 검색하다가 정갈하게 정리된 내용을 발견해서 공유할까 합니다. SELECT @err = @@ERROR, @row = @@ROWCOUNT IF @err != 0 OR @row != ..
MS-SQL CTE 구문을 이용한 페이징 쿼리 예제 웹 사이트를 개발할 때 가장 고민되는 부분 중 하나가 페이징입니다. 보통 MS-SQL 에서는 중첩 쿼리를 이용하여 TOP n 스타일의 쿼리를 하는 경우가 많은데, 퍼포먼스 측면에서 아주 쥐약인 경우가 많습니다. 오늘 소개해 드리는 페이징 쿼리는 일단 속도가 그리 느리지 않고 중첩 쿼리에 비해 부하가 적을 것으로 추정(!)하고 있습니다 ^^; with rn as ( select EmailAddress, ROW_NUMBER() over (order by FirstName desc) as rn from Person.Contact ) select FirstName, LastName, rn from Person.Contact join rn on Person.Contact.EmailAddress = rn.Email..
ODP.NET 성능 카운터는 11g 버전 이상에서만 가능하다? 윈도우 기반의 서버를 사용할 때 참 유용한 것이 성능 카운터 입니다. 눈으로, 로그로 보이지 않는 것들도 다양한 객체와 성능 카운트를 통해서 확인이 가능하기 때문에 원인을 명확히 알 수 오동작의 단서를 제공하는 유용한 도구입니다. 이 성능 카운터에는 기본적으로 닷넷의 기본 프로바이더가 포함되어 있습니다. 닷넷이 설치된 PC 나 서버에서 해당 카테고리를 선택하면 측정 가능한 다양한 옵션이 보입니다. 그런데 오라클의 ODP.NET 을 사용하는 경우에는 기본적으로 제공되는 성능 개체가 아무것도 없습니다. 그리고 이 말은 " 오라클 클라이언트 10g 까지는 " 이라는 단서를 하나 더 붙이면 정확한 표현이 됩니다. 즉, 성능 카운터를 통해서 ODP.NET 의 다양한 카운터를 확인하기 위해서는 11g 이상의 클라이..
오라클 환경에서의 닷넷 어플리케이션 개발 #3 * 이 글은 오라클 기술 네트워크(Oracle Technology Network)에 공개된 Joh Paul Cook 의 영문 아티클을 번역 / 의역한 글입니다. 원문은 링크(http://tinyurl.com/m69mvh)를 통하여 확인하실 수 있습니다. 에러 핸들링 에러가 발생하게 되면 닷넷 어플리케이션은 유연하게 에러를 핸들링 해야 하며 사용자에게 의미있는 메세지를 전달해 주어야 합니다. Try-Catch-Finally 에러 핸들링 구조는 닷넷 언어의 한 부분입니다. 아래의 소스코드는 오라클 연계 개발시 Try-Catch-Finally 에러 핸들링 구조를 사용하는 간단한 예입니다. try { conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Conn..
오라클 환경에서의 닷넷 어플리케이션 개발 #2 * 이 글은 오라클 기술 네트워크(Oracle Technology Network)에 공개된 Joh Paul Cook 의 영문 아티클을 번역 / 의역한 글입니다. 원문은 링크(http://tinyurl.com/m69mvh)를 통하여 확인하실 수 있습니다. Visual C# 구문 프로젝트에 참조 추가를 한 다음 using 구문을 이용하여 네임스페이스를 선언해 주어야 합니다. 기술적으로 네임스페이스 선언은 해주지 않아도 관계 없지만, 간결한 코드를 위해서는 꼭 선언해 주는 것이 좋습니다. 일반적인 경우와 마찬가지로 네임스페이스나 클래스 선언이 시작되기 전에 using 문을 추가해 주면 됩니다. using Oracle.DataAccess.Client참조가 정상적으로 추가되었다면 using 문으로 네임스페이스를 ..