MySQL에서 파일 경로 일괄 찾기 및 바꾸기
데이터베이스에 저장된 파일 경로를 새로운 위치로 변경해야 하는 경우가 종종 있습니다. 이럴 때 MySQL의 REPLACE() 함수를 사용하면 UPDATE 문 하나로 해당 열의 모든 레코드에서 특정 문자열을 찾아 한 번에 교체할 수 있습니다.
REPLACE() 함수의 기본 문법은 다음과 같습니다.
REPLACE(컬럼명, '찾을_문자열', '바꿀_문자열')
이제 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 파일 경로를 저장할 테이블을 만듭니다.
mysql> create table DemoTable
(
FolderLocation text
);
Query OK, 0 rows affected (0.80 sec)2단계: 샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 파일 경로 레코드를 추가합니다.
mysql> insert into DemoTable values('C/ProgramFiles/AllMySQLProgram');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('C/ProgramFiles/JavaChatApplication');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('C/ProgramFiles/Main/Image.png');
Query OK, 1 row affected (0.18 sec)3단계: 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------------------------------------+ | FolderLocation | +------------------------------------+ | C/ProgramFiles/AllMySQLProgram | | C/ProgramFiles/JavaChatApplication | | C/ProgramFiles/Main/Image.png | +------------------------------------+ 3 rows in set (0.00 sec)
4단계: REPLACE() 함수로 경로 변경
다음 쿼리는 C/ProgramFiles라는 문자열을 E/MyFolder/Details로 찾아 바꾸는 예제입니다.
mysql> update DemoTable
set FolderLocation=replace(FolderLocation,'C/ProgramFiles','E/MyFolder/Details');
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0UPDATE 문 실행 결과, 3개 행이 모두 정상적으로 변경되었습니다.
5단계: 변경 결과 확인
테이블을 다시 조회하여 변경된 내용을 확인합니다.
mysql> select *from DemoTable;
모든 경로가 새 위치로 성공적으로 교체된 것을 볼 수 있습니다.
+----------------------------------------+ | FolderLocation | +----------------------------------------+ | E/MyFolder/Details/AllMySQLProgram | | E/MyFolder/Details/JavaChatApplication | | E/MyFolder/Details/Main/Image.png | +----------------------------------------+ 3 rows in set (0.00 sec)
정리
MySQL에서 열에 저장된 문자열을 찾아 바꾸려면 UPDATE 문과 REPLACE() 함수를 함께 사용하면 됩니다. REPLACE() 함수는 지정한 컬럼 값에서 첫 번째 인수로 전달된 문자열을 찾아 두 번째 인수의 문자열로 교체하며, 조건 없이 실행하면 테이블의 모든 행에 적용됩니다. 대량의 경로 데이터를 마이그레이션하거나 도메인·폴더 구조가 변경되었을 때 매우 유용하게 활용할 수 있습니다.