| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 라라벨
- chatGPT
- nginx
- docker
- miniconda
- nft
- Remix
- Laravel
- React
- node
- openAI
- 회고
- 오블완
- polygon
- WSL
- Ai
- exceljs
- Python
- 블록체인
- 배포
- nodejs
- AWS
- CSS
- jquery
- NextJS
- 티스토리챌린지
- metamask
- netfunnel
- PM2
- Today
- Total
박주니 개발 정리
.bak 파일을 csv 파일로 복원하는 방법 본문
설명전)
.bak파일은 Microfoft SQL Server(MSSQL)의 데이터베이스 백업 파일입니다. 이 파일을 열기 위해서는 단순히 텍스트 에디터로 여는 것이 아니라 SQL Server 를 통해 복원해야합니다.
하지만 SQL Server로 직접 설치해서 진행하게 되면 지정된 파일을 찾을 수 없다는 안내만 나옵니다.

이 방법을 해결하기 위해서는 Docker 기반으로 접근해서 해결했고 csv 복원하는건 Python 기반으로 설명드리겠습니다.
1. Docker을 설치합니다.
https://www.docker.com/products/docker-desktop/
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.
www.docker.com
추가 설명)
Download Docker Desktop 클릭해서 운영환경에 맞게 설치하시면 됩니다.
2. WSL 및 리눅스 배포판이 설정되어있는 지 확인합니다.
wsl -l -v

추가 설명)
- wsl 초기 셋팅할 때 참고
wsl 환경에서 docker 환경 셋팅하는 방법
wsl 환경 활성화 및 Ubuntu 설정 1. PowerShell을 관리자 권한으로 실행 후, wsl을 설치합니다. wsl --install2. 특정 ubuntu 버전을 설치합니다. wsl --install -d Ubuntu-22.043. wsl 버전을 확인합니다. wsl --list --ve
junhee6773.tistory.com
- 계속하려면 Linux용 Windows 하위 시스템 최신 버전으로 업데이트해야 합니다. 'wsl.exe --update'를 실행하여 업데이트할 수 있습니다. 자세한 내용은 https://aka.ms/wslinstall 참조하세요. Linux용 Windows 하위 시스템 설치하려면 아무 키나 누르세요. CTRL-C 누르거나 이 창을 닫아 취소하세요. 이 프롬프트는 60초 후 시간이 초과됩니다. 문구가 나올때 wsl 업데이트 방법
wsl --update
업데이트 완료 후
wsl --shutdown
- Ubuntu 배포판이 설치되지 않았을 경우
wsl --install -d Ubuntu
3. Docker에서 SQL Server 컨테이너를 실행합니다.
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourPassword123!" -p 1433:1433 --name sql2022 -d mcr.microsoft.com/mssql/server:2022-latest
추가 설명
Docker가 멈춰있으면 해당 코드가 정상적으로 실행이 안되니 Actions에서 Start를 진행합니다.

4. SQL Sever 컨테이너가 정상적으로 실행되었는 지 확인합니다.
docker ps -a

5. 컨테이너 안에 백업 받을 폴더를 생성합니다.
docker exec sql2022 mkdir /var/opt/mssql/backup
6. 컨테이너 안에 .bak 복사를 진행합니다.
docker cp "C:\Users\user\Downloads\hwangpajp.bak" sql2022:/var/opt/mssql/backup/hwangpajp.bak
추가 설명
지금 이 폴더이름은 예시입니다. 현재 .bak 파일이 있는 경로에 맞게 설정하시면 됩니다.
7. 복원된 데이터베이스에 접속해서 SQL 명령을 직접 실행합니다.
docker run -it --rm mcr.microsoft.com/mssql-tools /bin/bash

Linux 프롬프트 변경된 후
/opt/mssql-tools/bin/sqlcmd -S host.docker.internal -U sa -P YourPassword123!
1>이 활성화가 되면 백업 파일을 실행합니다.
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/hwangpajp.bak';
GO

실행하면

8. python에서 pyodbc를 설치합니다.
pip install pandas pyodbc
9. SQL Server 컨테이너 내부에서 실행되고 있는 .bak파일을 csv 파일로 추출합니다.
import pyodbc
import pandas as pd
import os
# 연결 정보 설정
conn = pyodbc.connect(
"DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=localhost,1433;"
"UID=sa;"
"PWD=YourPassword123!;"
"DATABASE=hwangpajp"
)
cursor = conn.cursor()
# 테이블 이름 가져오기
cursor.execute("SELECT name FROM sys.tables")
tables = cursor.fetchall()
# 저장 폴더
output_folder = "exported_tables"
os.makedirs(output_folder, exist_ok=True)
# 모든 테이블을 순회하며 CSV로 저장
for table in tables:
table_name = table[0]
print(f"Exporting table: {table_name}")
df = pd.read_sql(f"SELECT * FROM [{table_name}]", conn)
df.to_csv(os.path.join(output_folder, f"{table_name}.csv"), index=False)
cursor.close()
conn.close()
print("✅ 모든 테이블을 CSV로 저장했습니다.")
추가 설명
DATABASE는 설정하신 이름에 맞게 변경하시면 됩니다.
