MySQL에서 ALTER TABLE 문 대신 CREATE UNIQUE INDEX 문을 사용하여 기존 테이블의 특정 필드에 UNIQUE 제약 조건을 적용할 수 있습니다. 이 방법은 테이블 구조를 직접 변경하지 않고도 고유 인덱스를 생성해 중복 데이터 입력을 방지할 수 있다는 장점이 있습니다.CREATE UNIQUE INDEX 문법CREATE UNIQUE INDEX index_name ON table_name(Column_name);index_name: 생성할 고유 인덱스의 이름table_name: 제약 조건을 적용할 테이블 이름Col
MySQL 테이블에서 UNIQUE 제약 조건에 의해 자동으로 생성된 인덱스를 확인하려면 SHOW INDEX 문을 사용하면 됩니다. 이 문장은 지정한 테이블에 존재하는 모든 인덱스의 상세 정보를 보여주므로, UNIQUE 제약 조건으로 만들어진 인덱스도 함께 확인할 수 있습니다.구문SHOW INDEX FROM table_name;예제empl이라는 테이블이 있고, empno 컬럼에 UNIQUE 제약 조건이 설정되어 있다고 가정해 보겠습니다.mysql> describe empl; +--------+-------------+------
자바 기반 애플리케이션에서 메모리 누수(leak)를 추적하고 힙 사용량을 분석해야 할 때 활용할 수 있는 무료 및 상용 도구는 매우 다양합니다. 그중에서도 SAP가 개발한 Memory Analyzer(메모리 분석기)는 대표적인 선택지입니다. 이 도구를 사용하면 SQL과 유사한 간단한 쿼리 문장만으로 인메모리 객체를 대상으로 메모리 누수를 손쉽게 찾아낼 수 있습니다.1. SAP Memory AnalyzerSAP Memory Analyzer는 힙 덤프(heap dump) 파일을 불러와 객체별 점유 메모리를 시각적으로 보여 주며, OQL
NUMC 유형 필드에 SUM 함수를 사용하는 방법NUMC는 숫자 텍스트(numeric text) 유형입니다. 데이터베이스에서는 VARCHAR 형태로 저장되기 때문에 일반 텍스트로 취급되며, 이로 인해 SUM 함수를 직접 적용할 수 없습니다.왜 SUM 함수가 동작하지 않을까요?SUM 함수는 산술 연산을 수행하기 위해 숫자 유형의 데이터가 필요합니다. 그러나 NUMC 필드는 이름 그대로 숫자처럼 보이는 텍스트이므로, 데이터베이스 수준에서는 문자열(varchar)로 처리됩니다. 따라서 SELECT 문에서 해당 필드에 직접 SUM을 적용하
SAP HANA에서 저장 프로시저(Stored Procedure)를 생성할 때 스칼라 유형이 허용되지 않습니다(scalar type is not allowed)라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 대부분 SQLScript 문법상의 사소한 실수에서 비롯되며, 코드 몇 군데만 수정하면 간단히 해결할 수 있습니다. 아래에서 원인과 해결 방법을 자세히 살펴보겠습니다.수정하여 테스트할 수 있는 저장 프로시저 예제먼저, 직접 편집하고 실행해 볼 수 있는 저장 프로시저 기본 구조는 다음과 같습니다.PROCEDURE SLT_D
SQL UNION 절이란?SQL의 UNION 절(연산자)은 두 개 이상의 SELECT 문의 결과를 하나로 결합하여 반환하면서, 중복된 행은 제외하는 기능을 수행합니다. 여러 테이블이나 뷰에서 유사한 형태의 데이터를 통합해 조회할 때 유용하게 활용됩니다.UNION 사용을 위한 필수 조건UNION 절을 사용하려면 결합하려는 각 SELECT 문이 다음 조건을 모두 충족해야 합니다.선택하는 컬럼의 개수가 동일해야 합니다.컬럼 표현식의 개수가 동일해야 합니다.각 컬럼의 데이터 타입이 서로 일치해야 합니다.컬럼의 나열 순서까지 동일해야 합니다
SAP Business One SDK 환경에서 그리드뷰(GridView)에 불러온 데이터를 버튼 클릭 한 번으로 데이터베이스에 저장하려면, 상황과 목적에 맞는 여러 구현 방식 중 하나를 선택할 수 있습니다. 대표적인 방법으로 DI API 문서 객체, 직접 SQL 쿼리 작성, 그리고 Data Transfer Workbench(DTW) 활용이 있습니다.1. DI API 문서(Document) 객체 활용SAP DI(Data Interface) API가 제공하는 문서 객체를 사용하면 구매 오더(Purchase Order)와 같은 표준 비즈
MySQL에서는 날짜를 10자리 숫자 형태의 유닉스 타임스탬프(Unix Timestamp)로 저장하거나 처리해야 하는 경우가 많습니다. Python에서는 이를 아주 간단하게 변환할 수 있으며, 날짜가 어떤 형태로 주어졌는지에 따라 두 가지 방법으로 나눌 수 있습니다.1. datetime 객체가 있는 경우날짜가 이미 datetime 객체 형태로 되어 있다면, 해당 객체의 timetuple() 메서드를 호출한 뒤 그 결과를 time.mktime() 함수에 전달하기만 하면 됩니다.예제 코드import time from datetime i
MySQL 데이터베이스에 날짜를 저장하려면 먼저 테이블에 DATE 또는 DATETIME 타입의 컬럼이 있어야 합니다. 그다음, 날짜를 데이터베이스에 삽입하기 전에 문자열 형식으로 변환해야 하는데, 이때 Python의 datetime 모듈에서 제공하는 strftime() 포맷팅 함수를 활용할 수 있습니다.날짜 삽입 예제from datetime import datetime now = datetime.now() id = 1 formatted_date = now.strftime(%Y-%m-%d %H:%M:%S) # cursor라는 이름의
파이썬 객체를 MySQL 데이터베이스에 삽입하기서버에 test라는 이름의 MySQL 데이터베이스가 존재하고, 그 안에 employee 테이블이 이미 생성되어 있다고 가정해 보겠습니다. 이 테이블은 fname(이름), lname(성), age(나이), gender(성별), salary(급여)의 다섯 개 필드로 구성됩니다.이제 다음과 같이 정의된 하나의 레코드 데이터를 담고 있는 튜플(tuple) 객체를 MySQL 데이터베이스에 삽입한다고 가정합니다.t1 = (Steven, Assange, 21, M, 2001)1단계: PyMySQL
개요 CGI(Common Gateway Interface)는 웹 서버가 외부 프로그램을 실행하고 그 결과를 브라우저로 전달하는 표준 인터페이스입니다. Python CGI 스크립트를 활용하면 HTML 폼에서 전송된 데이터를 받아 MySQL 데이터베이스와 직접 상호 작용할 수 있습니다. 이 글에서는 사용자가 이메일과 비밀번호를 입력해 로그인하는 간단한 예제를 통해 Python CGI와 MySQL의 연동 과정을 단계별로 살펴보겠습니다. 1단계: 로그인 폼 작성 (login.html) 먼저 사용자로부터 이메일과 비밀번호를 입력받는 HTM
SAP SE16N에서 열 설명이 갱신되지 않을 때 해결 방법SAP SE16N 트랜잭션에서 열의 데이터 요소(Data Element)를 변경했는데도 화면에 표시되는 설명이 그대로인 경우가 종종 발생합니다. 이럴 때 활용할 수 있는 실질적인 해결 방법을 정리했습니다.1. 변경 사항 활성화(Activate) 확인가장 먼저 점검해야 할 항목은 변경 사항의 활성화 여부입니다. 데이터 요소를 수정한 후에는 반드시 활성화를 실행해야 시스템에 변경 내용이 정상적으로 반영됩니다. 활성화를 누락하면 설명이 갱신되지 않으므로, 우선 이 부분부터 확인하
SQL과 ABAP 프로그램 중 무엇을 사용해야 할까?조건을 추가하는 작업에서 SQL과 ABAP 프로그램 중 어느 쪽이 더 나은 성능을 보일지 고민되는 경우가 많습니다. 하지만 처리해야 할 데이터가 약 500건 수준으로 적다면, 두 방식 사이에 유의미한 성능 차이는 발생하지 않습니다. 따라서 개발 환경이나 코드 가독성 등 프로젝트 상황에 맞춰 편한 쪽을 자유롭게 선택하면 됩니다.ABAP 코드 예시예를 들어, 내부 테이블에서 특정 조건을 만족하는 레코드 수를 세고 싶다면 다음과 같이 ABAP 코드를 작성할 수 있습니다.LOOP AT l
원인: 변수 앞에 콜론(:)이 누락되었습니다ABAP에서 Native SQL(EXEC SQL) 구문 안에서 ABAP 변수를 참조하려면 반드시 변수 이름 앞에 콜론(:)을 붙여야 합니다. 콜론이 없으면 데이터베이스가 해당 값을 ABAP 변수로 인식하지 못하고, 그 결과 SY-DATUM 같은 시스템 변수의 날짜 값이 테이블에 정상적으로 저장되지 않습니다.아래와 같이 수정하면 문제가 해결됩니다:EXEC SQL. INSERT INTO order VALUES(2, :sy-datum)ENDEXEC.콜론(
플랫 파일을 활용한 데이터 가져오기플랫 파일(Flat File)을 이용한 임포트·익스포트는 가장 간단하고 손쉬운 방법입니다. 일회성 작업이라면 CSV 파일을 활용하는 것만으로도 충분합니다. 다만 동일한 작업을 반복적으로 수행해야 한다면, HANA SLT 복제(SLT Replication), Smart Data Access 등과 같은 SAP HANA의 ETL 옵션을 사용하는 것이 좋습니다.SAP HANA 데이터 복제 개요SAP HANA 복제(Replication)는 소스 시스템에서 SAP HANA 데이터베이스로 데이터를 마이그레이션할
SAP DB에서 월별 데이터를 다룰 때, 회계 연도처럼 달력 순서가 아닌 특정 월부터 데이터를 정렬해야 하는 경우가 자주 있습니다. 예를 들어 8월을 한 해의 시작으로 보고 8월 → 9월 → … → 7월 순서로 정렬하고 싶다면, 단순히 ORDER BY에 월 컬럼을 지정하는 것만으로는 원하는 결과를 얻을 수 없습니다.T0.Name이 문자형(char) 필드인 경우월 값이 문자형 필드(T0.Name)에 저장되어 있다면, 앞 두 글자를 숫자로 변환한 뒤 조건에 따라 값을 보정하는 방식으로 정렬 키를 새로 만들어야 합니다. 이때 ORDER
데이터베이스 뷰란 무엇인가?SAP에서 뷰(View)를 생성하면 여러 데이터베이스 테이블을 INNER JOIN 방식으로 결합하여 하나의 논리적 개체를 만들 수 있습니다. 이때 주의할 점은, 데이터베이스 뷰의 기반 테이블(Basis Table)은 반드시 투명 테이블(Transparent Table)이어야 한다는 것입니다.두 개의 테이블로 뷰를 생성하는 절차두 개의 테이블을 기반으로 뷰를 만들려면 다음 단계를 따르세요.1. 먼저 유지보수하고자 하는 기본 테이블(Primary Table)을 입력합니다.2. 해당 테이블 필드에 커서를 위치시
SQL Server에서 데이터를 텍스트 파일로 내보내거나 가져올 때는 BCP(Bulk Copy Program) 유틸리티를 활용하는 것이 가장 간편하고 효율적입니다. BCP는 명령 프롬프트에서 실행되는 대량 데이터 복사 도구로, 별도의 그래픽 인터페이스 없이도 빠르게 대용량 데이터를 처리할 수 있습니다. 1. SQL Server에서 텍스트 파일로 데이터 내보내기 아래 명령어를 실행하면 데이터베이스의 테이블 데이터를 지정한 위치의 텍스트 파일로 내보낼 수 있습니다. BCP Db.TN out 텍스트 파일 저장 경로 -c -S 서버이름 -
SAP 서브쿼리에서 조건 변수 사용하기결론부터 말씀드리면, 서브쿼리(Sub-Query) 내에서는 조건 변수를 직접 사용할 수 없습니다.다만 실무에서 이러한 제약을 우회해야 하는 상황이라면, 아래의 대안적인 접근 방식을 활용할 수 있습니다.1. 저장 프로시저(Stored Procedure) 활용전체 쿼리 로직을 하나의 저장 프로시저로 캡슐화한 뒤, 필요한 시점에 해당 프로시저를 호출하여 실행하는 방법입니다. 복잡한 비즈니스 로직을 포함하는 경우 코드 관리와 재사용 측면에서도 유리합니다.2. 뷰(View) 생성메인 쿼리 또는 서브쿼리에
ABAP 프로그래밍에서 선택 화면(Selection Screen)의 날짜 필드에 현재 날짜를 기본값으로 자동 입력하고 싶은 경우가 종종 있습니다. 이때 활용할 수 있는 두 가지 방법을 소개합니다.방법 1: INITIALIZATION 이벤트에서 값 설정아래 코드를 사용해 보세요. 단, 반드시 START-OF-SELECTION 이벤트 이전에 값을 설정해야 한다는 점에 유의해야 합니다.select-OPTIONS: so_date FOR sy-datlo. INITIALIZATION. so_date-sign = I. so_date-option