데이터베이스 59

오라클 프로시저 파라미터 정보 조회하는 파이썬 코드 (oracledb 사용)

오라클 데이터베이스에서 프로시저(Procedure)의 파라미터 정보를 조회하는 것은 DBA나 개발자에게 유용한 작업입니다. 특정 프로시저의 파라미터 이름, 데이터 타입, 입력/출력 여부를 확인해야 할 때가 많죠. 이번 글에서는 Python의 oracledb 라이브러리를 사용해 오라클 프로시저의 파라미터 정보를 조회하는 코드를 작성해 보겠습니다. 이 코드는 프로시저 이름을 입력받아 해당 파라미터 정보를 반환하는 간단한 스크립트입니다.준비물Python 환경: Python 3.6 이상oracledb 라이브러리: 설치가 필요합니다. 아래 명령어로 설치하세요.bash pip install oracledb오라클 데이터베이스 접속 정보: 사용자 이름, 비밀번호, DSN(데이터 소스 이름)이 필요합니다.오라클 DBA ..

Python과 oracledb로 SQL 파일의 Oracle 저장 프로시저 실행하기

오라클 데이터베이스에서 저장 프로시저를 관리하다 보면, 특정 디렉토리 내의 SQL 파일을 자동으로 실행해야 할 때가 있습니다. 이 블로그에서는 oracledb 라이브러리와 Python을 사용해, 특정 경로와 그 하위 디렉토리를 순회하며 CREATE OR REPLACE PROCEDURE로 시작하는 SQL 파일을 실행하는 방법을 소개합니다. 이 코드는 기존의 oracle_procedure_util.py 모듈을 기반으로 작성되었으며, 디렉토리 순회와 SQL 실행 로직을 추가했습니다.1. 코드 개요이 Python 스크립트는 다음 기능을 수행합니다:디렉토리 순회: 지정된 경로와 하위 디렉토리를 탐색해 .sql 확장자를 가진 파일을 찾습니다.SQL 파일 필터링: 파일 내용이 CREATE OR REPLACE PROC..

Oracle DB에서 저장 프로시저 호출 및 동적 데이터 처리 방법

Oracle 데이터베이스에서 저장 프로시저를 호출하고, 결과가 없을 경우 동적으로 대체 데이터를 생성하는 방법을 소개합니다. 이 글에서는 Python의 oracledb 모듈을 활용해 저장 프로시저를 호출하고, 결과 데이터를 분석하며, 필요 시 랜덤 데이터를 생성해 쿼리를 실행하는 과정을 세련되게 정리했습니다. 초보자부터 숙련자까지 참고할 수 있도록 코드와 출력 예시를 포함했습니다.1. Oracle DB 연결 및 저장 프로시저 호출먼저, Oracle DB에 연결하고 저장 프로시저를 호출하는 기본 구조를 살펴보겠습니다. 아래 코드는 oracledb 모듈을 사용해 DB에 연결하고, 특정 저장 프로시저(NEXTPOT.STP_STK_050101_LST_01)를 호출합니다. CREATE OR REPLACE PRO..

Oracle DB Context MCP Server와 Vuetify로 동적 CRUD 화면 구현하기

Oracle DB Context MCP Server를 사용하여 특정 오라클 데이터베이스 테이블의 스키마 정보를 가져오고, 이를 기반으로 Vuetify를 활용해 CRUD(Create, Read, Update, Delete) 화면을 동적으로 생성하는 예제. 아래에서는 Oracle DB Context MCP Server를 통해 테이블 스키마를 조회하고, Vue.js와 Vuetify를 사용하여 해당 테이블에 대한 CRUD 인터페이스를 생성하는 예제를 단계별로 설명합니다.전제 조건Oracle DB Context MCP Server:설치 및 설정 완료 (.env 파일에 오라클 접속 정보 포함).실행 명령: uv run main.pyMCP 서버가 테이블 스키마 조회 및 데이터 질의를 지원한다고 가정.필요 패키지:Ba..

Python으로 오라클 저장 프로시저 OUT 커서 필드 정보 추출하기

오라클 데이터베이스의 저장 프로시저(SP)에서 반환되는 OUT 커서의 필드 정보를 동적으로 추출하는 방법을 Python으로 구현해보겠습니다. 이 방법은 cx_Oracle 모듈을 활용하며, 어떤 저장 프로시저든 필드 이름, 데이터 타입, 정밀도 등의 메타데이터를 쉽게 얻을 수 있도록 설계되었습니다. 특히, 커서에 데이터가 없어도 필드 정보를 추출할 수 있다는 점이 강력한 장점입니다.전제 조건시작하기 전에 다음이 준비되어 있어야 합니다:cx_Oracle 설치: pip install cx_Oracle 명령어로 설치하세요.오라클 데이터베이스 연결: 데이터베이스에 접근할 수 있는 환경(DSN, 사용자 이름, 비밀번호)이 필요합니다.저장 프로시저: OUT 파라미터로 SYS_REFCURSOR를 반환하는 저장 프로시저..

Nuxt.js에서 MariaDB와 연결해 SELECT 데이터 리턴하기

안녕하세요, Nuxt 개발자 여러분! 이번에는 Nuxt 3의 서버 핸들러(defineEventHandler)에서 MariaDB 데이터베이스에 연결하고, SELECT 쿼리를 실행해 결과를 클라이언트에 리턴하는 방법을 알아보겠습니다. MariaDB는 MySQL과 호환되는 오픈소스 데이터베이스로, Node.js 환경에서 쉽게 통합할 수 있습니다. 단계별로 상세히 설명할게요!1. 기본 환경 설정MariaDB에서 데이터를 가져오려면 먼저 프로젝트에 데이터베이스 연결 라이브러리를 설치하고, Nuxt의 서버 환경에서 이를 사용해야 합니다.1.1. 프로젝트 구조 my-nuxt-project/├── pages/│ └── index.vue├── server/│ └── api/│ └── getData.js..

Apache NiFi: 데이터 흐름 관리의 강력한 오픈소스 도구 완벽 분석

데이터 흐름 관리와 ETL(Extract, Transform, Load) 작업을 위한 강력한 도구, Apache NiFi에 대해  파헤쳐보는 시간을 가져보겠습니다. 데이터 엔지니어, 개발자, 또는 데이터 관리에 관심 있는 분이라면 NiFi가 무엇인지, 어떻게 동작하며, 어떤 상황에서 빛을 발하는지 상세히 알아갈 수 있을 겁니다. 자, 커피 한 잔 들고 편안히 앉아서 함께 탐구 시작해 볼까요?Apache NiFi란 무엇인가?Apache NiFi는 데이터를 다양한 소스에서 추출해 변환하고 목적지로 전달하는 과정을 실시간으로 관리할 수 있는 오픈소스 플랫폼입니다. 이 도구는 원래 미국 국가안보국(NSA)이 내부적으로 "NiagaraFiles"라는 이름으로 개발한 것으로, 2014년에 Apache 재단에 기증되..

MyBatis의 mapUnderscoreToCamelCase 설정을 false로 변경하고 수동 매핑하는 방법

mapUnderscoreToCamelCase 설정을 false로 변경한 예제를 만들어보겠습니다. 이 예제에서는 MyBatis가 데이터베이스 컬럼명을 카멜 케이스로 자동 변환하지 않도록 설정하고, 수동으로 매핑하는 방법을 보여드리겠습니다.1. 환경 설정A. mybatis-config.xml 설정 B. Spring Boot에서 application.properties 설정mybatis.configuration.map-underscore-to-camel-case=false2. 데이터베이스 테이블 및 샘플 데이터예제를 위해 다음과 같은 users 테이블을 가정합니다.CREATE TABLE users ( user_id INT PRIMARY KEY, user_name VARCH..

스프링과 MyBatis를 활용한 데이터베이스 프로시저 개발 가이드: 효율적인 설계와 유지보수를 위한 종합적인 안내

스프링과 MyBatis에서 모든 데이터베이스 쿼리를 프로시져로 할때 주의 점스프링(Spring)과 MyBatis를 사용해 데이터베이스와 연동하고, 모든 데이터베이스 쿼리를 프로시저(Stored Procedure)로 처리하려는 경우, 효율적인 개발과 유지보수를 위해 신경 써야 할 몇 가지 중요한 사항이 있습니다. 이와 함께 예제를 통해 더 구체적으로 설명하겠습니다.프로시저 사용 시 주요 고려 사항1. 프로시저 설계명확한 목적 정의: 각 프로시저가 명확한 단일 책임을 가지도록 설계합니다. 프로시저가 한 가지 이상을 처리하려 하면 복잡도가 증가하고 유지보수도 어려워질 수 있습니다.예: get_user_info (사용자의 정보를 조회)와 update_user_status (사용자의 상태를 업데이트)를 별도의 프..

Maria DB customers 테이블을 위한 다양한 조건의 CRUD 프로시저 작성

CREATE TABLE `customers` (`del` enum('Y','N') NOT NULL DEFAULT 'N',`customerNumber` int(11) NOT NULL,`customerName` varchar(50) NOT NULL,`contactLastName` varchar(50) NOT NULL,`contactFirstName` varchar(50) NOT NULL,`phone` varchar(50) NOT NULL,`addressLine1` varchar(50) NOT NULL,`addressLine2` varchar(50) DEFAULT NULL,`city` varchar(50) NOT NULL,`state` varchar(50) DEFAULT NULL,`postalCode` var..