BÀI GIẢNG CHI TIẾT – KẾT NỐI EXCEL VỚI CƠ SỞ DỮ LIỆU SQL BẰNG PYTHON

Chủ đề:

📊 Cách kết nối Excel với cơ sở dữ liệu SQL và trích xuất, ghi dữ liệu vào cơ sở dữ liệu


PHẦN 1 — MỤC TIÊU BUỔI HỌC 🎯

Sau buổi học này, học viên có thể tự làm được:

✅ Đọc dữ liệu từ file Excel bằng Python

✅ Kết nối Python với cơ sở dữ liệu SQL

✅ Đẩy dữ liệu từ Excel vào SQL Server

✅ Truy vấn dữ liệu từ SQL về Excel

✅ Tự động hóa báo cáo doanh nghiệp

✅ Xây dựng quy trình ETL đơn giản cho công ty


PHẦN 2 — TƯ DUY NGHIỆP VỤ THỰC TẾ 🧠


Tình huống doanh nghiệp thật

Công ty có:

  • File Excel đơn hàng mỗi ngày
  • Dữ liệu khách hàng
  • Dữ liệu nhân sự
  • Báo cáo kế toán
  • File nhập xuất kho

Mỗi ngày nhân viên phải:

❌ copy paste thủ công

❌ nhập lại vào phần mềm

❌ rất dễ sai dữ liệu

❌ mất hàng giờ

❌ khó kiểm tra lịch sử


Giải pháp bằng Python + SQL 🚀

Python sẽ:

👉 đọc file Excel

👉 kiểm tra dữ liệu

👉 kết nối SQL

👉 tự động ghi dữ liệu vào database

👉 lấy dữ liệu từ database xuất ngược ra Excel

Kết quả:

✅ nhanh hơn 20 lần

✅ giảm lỗi nhập liệu

✅ kiểm soát dữ liệu tốt hơn

✅ phục vụ Power BI Dashboard

✅ dễ mở rộng hệ thống


PHẦN 3 — CHUẨN BỊ CÔNG CỤ 🛠


Cần cài gì?

1. Python

Khuyến nghị:

Python 3.11+

Tải tại:

👉 https://www.python.org


2. Visual Studio Code

Dùng để viết code

Tải tại:

👉 https://code.visualstudio.com


3. SQL Server

Có thể dùng:

SQL Server Express (miễn phí)

hoặc

MySQL

hoặc

PostgreSQL

Trong bài này dùng:

SQL Server

vì doanh nghiệp Việt Nam dùng rất nhiều


4. SQL Server Management Studio (SSMS)

Dùng để quản lý database

Tải tại:

👉 Microsoft SSMS


PHẦN 4 — CÀI THƯ VIỆN PYTHON 📦


Bước 1: Mở Command Prompt

Bấm:

Windows + R

gõ:

cmd

bấm Enter


Bước 2: Cài thư viện

Copy toàn bộ lệnh này:

pip install pandas openpyxl sqlalchemy pyodbc

dán vào cmd → Enter


Giải thích từng thư viện 💡

pandas

Dùng để đọc Excel

openpyxl

Hỗ trợ file .xlsx

sqlalchemy

Kết nối database chuyên nghiệp

pyodbc

Driver kết nối SQL Server


Lỗi thường gặp ⚠️

Lỗi:

pip is not recognized

Nguyên nhân:

Python chưa add PATH

Cách xử lý:

Cài lại Python

NHỚ tick:

Add Python to PATH

PHẦN 5 — CHUẨN BỊ FILE EXCEL 📁


Tạo file Excel mẫu

Tên file:

donhang.xlsx

Sheet:

DonHang

Dữ liệu như sau:

MaDonTenKhachSanPhamSoLuongDonGia
DH001Nguyễn Văn ALaptop215000000
DH002Trần Thị BChuột5250000
DH003Lê Văn CBàn phím3800000

Vì sao phải chuẩn hóa dữ liệu? 📌

Nếu cột sai tên:

❌ code lỗi

Nếu dữ liệu lẫn chữ và số:

❌ SQL không nhận

Nếu dòng trống:

❌ insert lỗi

Cho nên:

Dữ liệu đầu vào phải sạch

rất quan trọng


PHẦN 6 — TẠO DATABASE SQL 🏗


Bước 1: Mở SSMS

Kết nối tới SQL Server

Ví dụ:

Server name:
localhost

hoặc

.\SQLEXPRESS

Bước 2: Tạo database mới

Click phải:

Databases
→ New Database

Tên:

QuanLyBanHang

bấm OK


Bước 3: Tạo bảng DonHang

Mở:

New Query

dán code:

CREATE TABLE DonHang (
    MaDon VARCHAR(50),
    TenKhach NVARCHAR(100),
    SanPham NVARCHAR(100),
    SoLuong INT,
    DonGia FLOAT
);

bấm:

Execute

PHẦN 7 — PYTHON ĐỌC EXCEL 📖


Code đầu tiên

import pandas as pd

file_path = "donhang.xlsx"

df = pd.read_excel(file_path)

print(df)

Giải thích từng dòng 🔍

import pandas as pd

nạp thư viện pandas

read_excel()

đọc file Excel

print(df)

hiển thị dữ liệu


Kiểm thử bắt buộc ✅

Phải thấy dữ liệu hiện ra như bảng Excel

Nếu lỗi:

FileNotFoundError

nguyên nhân:

Sai đường dẫn file


PHẦN 8 — KẾT NỐI PYTHON VỚI SQL SERVER 🔗


Code kết nối SQL

from sqlalchemy import create_engine

server = 'localhost'
database = 'QuanLyBanHang'

connection_string = (
    f"mssql+pyodbc://@{server}/{database}"
    "?driver=ODBC+Driver+17+for+SQL+Server"
    "&trusted_connection=yes"
)

engine = create_engine(connection_string)

print("Kết nối thành công!")

Vì sao dùng create_engine()? 💡

Vì:

✅ ổn định

✅ chuyên nghiệp

✅ dễ mở rộng

✅ dùng tốt với pandas


Lỗi thường gặp ⚠️

Lỗi:

Data source name not found

Nguyên nhân:

Chưa cài ODBC Driver

Cách xử lý:

Cài:

ODBC Driver 17 for SQL Server


PHẦN 9 — GHI DỮ LIỆU TỪ EXCEL VÀO SQL 🚀


Code insert dữ liệu

import pandas as pd
from sqlalchemy import create_engine

file_path = "donhang.xlsx"

df = pd.read_excel(file_path)

server = 'localhost'
database = 'QuanLyBanHang'

connection_string = (
    f"mssql+pyodbc://@{server}/{database}"
    "?driver=ODBC+Driver+17+for+SQL+Server"
    "&trusted_connection=yes"
)

engine = create_engine(connection_string)

df.to_sql(
    name='DonHang',
    con=engine,
    if_exists='append',
    index=False
)

print("Đã ghi dữ liệu vào SQL thành công!")

Giải thích cực quan trọng 📌

if_exists=’append’

nghĩa là:

thêm dữ liệu mới

không xóa dữ liệu cũ


Nếu dùng:

replace

thì:

⚠️ xóa toàn bộ bảng cũ

rất nguy hiểm


PHẦN 10 — LẤY DỮ LIỆU TỪ SQL RA EXCEL 📤


Code truy vấn dữ liệu

query = "SELECT * FROM DonHang"

df_sql = pd.read_sql(query, engine)

df_sql.to_excel(
    "bao_cao_don_hang.xlsx",
    index=False
)

print("Xuất báo cáo thành công!")

Ứng dụng thực tế 📊

Mỗi sáng:

Python tự chạy

lấy dữ liệu từ SQL

xuất báo cáo Excel

gửi mail cho sếp

Power BI đọc tiếp

Đây chính là:

Tự động hóa doanh nghiệp thật


PHẦN 11 — KIỂM THỬ BẮT BUỘC 🔥


Phải test đủ 5 bước

Test 1

Excel đọc được chưa?

Test 2

SQL kết nối được chưa?

Test 3

Insert thành công chưa?

Test 4

Query trả dữ liệu đúng chưa?

Test 5

Excel xuất ra đúng chưa?


Tuyệt đối không bỏ qua test

Vì:

90% lỗi nằm ở bước test

không phải code


PHẦN 12 — BÀI TẬP THỰC HÀNH 🏆


Bài tập 1

Tạo bảng:

NhanVien

gồm:

  • MaNV
  • HoTen
  • PhongBan
  • Luong

và import từ Excel vào SQL


Bài tập 2

Tạo báo cáo:

Tổng doanh thu theo khách hàng

xuất ra Excel


Bài tập 3 nâng cao 🚀

Tự động:

8h sáng mỗi ngày

Python chạy

đọc SQL

xuất Excel

gửi email tự động

Đây là project doanh nghiệp thật


PHẦN 13 — KẾT LUẬN 🎯


Sau bài này học viên đã biết

✅ Excel → Python

✅ Python → SQL

✅ SQL → Excel

✅ Tự động hóa báo cáo

✅ Xây hệ thống thật cho công ty


Tư duy quan trọng nhất

Không phải:

học code

mà là:

giải quyết bài toán doanh nghiệp

Code chỉ là công cụ.

Tư duy mới là tiền.


CÂU CHỐT CUỐI BUỔI 🚀

Người biết copy paste làm việc 8 tiếng

Người biết Python + SQL để máy làm thay mình

🔥 Đây là khác biệt tạo ra thu nhập cao hơn.

Scroll to Top