Chào mọi người,
Mình đang tìm cách để tự động hóa việc trích xuất dữ liệu từ một file Excel lớn sang cơ sở dữ liệu SQL Server. Mình đã thử dùng Power Query nhưng cảm thấy hơi hạn chế khi cần xử lý phức tạp hoặc tùy chỉnh nhiều hơn.
Gần đây mình có tìm hiểu về Python và thư viện SQLAlchemy, có vẻ nó khá mạnh mẽ trong việc tương tác với các CSDL. Ý tưởng của mình là viết một script Python để đọc dữ liệu từ file Excel (có thể dùng thư viện Pandas), sau đó sử dụng SQLAlchemy để kết nối tới SQL Server và chèn dữ liệu vào bảng tương ứng.
Mình đã thử một đoạn code cơ bản như sau:
import pandas as pd
from sqlalchemy import create_engine
# Đọc dữ liệu từ Excel
df = pd.read_excel('du_lieu_cua_toi.xlsx')
# Thông tin kết nối SQL Server (thay thế bằng thông tin của bạn)
server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'
# Chuỗi kết nối
conn_str = f'mssql+pyodbc://{username}:{password}@{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server'
engine = create_engine(conn_str)
# Chèn dữ liệu vào bảng (thay 'ten_bang_cua_ban' bằng tên bảng thực tế)
df.to_sql('ten_bang_cua_ban', engine, if_exists='replace', index=False)
print('Đã chèn dữ liệu thành công!')Tuy nhiên, mình gặp một số vấn đề:
- Cách xử lý khi có dữ liệu trùng lặp? Mình muốn ghi đè hoặc cập nhật nếu có.
- Làm thế nào để tối ưu hiệu năng khi file Excel có hàng trăm nghìn dòng?
- Có cách nào để thực hiện các thao tác phức tạp hơn như cập nhật từng phần dữ liệu dựa trên điều kiện không?
Rất mong nhận được sự chia sẻ kinh nghiệm từ các anh chị em đã từng làm việc này, hoặc có bất kỳ gợi ý nào về cách tiếp cận khác hiệu quả hơn.
Cảm ơn mọi người đã đọc bài!