Chào các bác, em là thành viên mới của diễn đàn, em làm về mảng phân tích dữ liệu và thường xuyên phải làm việc với cả Excel lẫn cơ sở dữ liệu. Gần đây, em có tìm hiểu và áp dụng cách tự động hóa việc đồng bộ dữ liệu giữa Excel và SQLite bằng Python. Em thấy cách này khá hay và hiệu quả nên muốn chia sẻ lại cho anh em nào đang cần.
Trước đây, mỗi lần có dữ liệu mới trong file Excel là em lại phải copy-paste thủ công sang SQLite hoặc viết script SQL để import. Việc này tốn khá nhiều thời gian, đặc biệt với các file Excel lớn và thay đổi thường xuyên.
Với Python, việc này trở nên đơn giản hơn rất nhiều. Em sử dụng thư viện pandas để đọc dữ liệu từ file Excel và thư viện sqlite3 có sẵn trong Python để tương tác với cơ sở dữ liệu SQLite.
Các bước cơ bản em thực hiện như sau:
- Đọc dữ liệu từ file Excel vào một DataFrame của pandas.
- Kết nối tới file cơ sở dữ liệu SQLite (nếu chưa có sẽ tự tạo).
- Sử dụng phương thức
to_sqlcủa pandas để ghi dữ liệu từ DataFrame vào một bảng trong SQLite. Có thể tùy chọn ghi đè (if_exists='replace') hoặc thêm mới (if_exists='append').
Ví dụ đoạn code đơn giản:
import pandas as pd
import sqlite3
# Đường dẫn đến file Excel và tên sheet
excel_file = 'du_lieu.xlsx'
sheet_name = 'Sheet1'
# Đường dẫn đến file SQLite
sqlite_db = 'database.db'
# Đọc dữ liệu từ Excel
df = pd.read_excel(excel_file, sheet_name=sheet_name)
# Kết nối tới SQLite
conn = sqlite3.connect(sqlite_db)
# Ghi dữ liệu vào bảng 'bang_du_lieu' trong SQLite
# if_exists='replace' sẽ xóa bảng cũ và tạo mới
# if_exists='append' sẽ thêm dữ liệu vào bảng hiện có
df.to_sql('bang_du_lieu', conn, if_exists='replace', index=False)
# Đóng kết nối
conn.close()
print('Đồng bộ dữ liệu thành công!')Cách này giúp em tiết kiệm rất nhiều thời gian và giảm thiểu sai sót. Anh em nào có kinh nghiệm hoặc có cách làm nào tối ưu hơn thì chia sẻ cho em với nhé!