Chào các bác, dạo này em đang làm việc với một database khá lớn trên SQL Server và cần trích xuất dữ liệu ra Excel để phân tích. Em đã thử qua Power Query nhưng với lượng dữ liệu lớn và yêu cầu cập nhật thường xuyên, em thấy hơi bất tiện.
Sau một thời gian tìm hiểu, em phát hiện ra có thể dùng Python để kết nối trực tiếp với SQL Server và xuất dữ liệu ra file Excel. Cách này tuy hơi 'lạ' so với các bài viết về Power Query hay VBA trong diễn đàn, nhưng nó lại rất linh hoạt và mạnh mẽ.
Em xin chia sẻ sơ bộ cách làm như sau:
- Cài đặt thư viện cần thiết:
pyodbcđể kết nối với SQL Server.pandasđể xử lý dữ liệu.openpyxl(hoặcxlsxwriter) để ghi file Excel.- Viết script Python:
import pyodbc
import pandas as pd
# Thông tin kết nối SQL Server
server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'
conn_str = f'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}'
try:
cnxn = pyodbc.connect(conn_str)
cursor = cnxn.cursor()
# Câu lệnh SQL để lấy dữ liệu
query = """SELECT column1, column2, column3 FROM your_table WHERE condition;"""
cursor.execute(query)
# Lấy tất cả các hàng
rows = cursor.fetchall()
# Lấy tên các cột
columns = [column[0] for column in cursor.description]
# Tạo DataFrame bằng pandas
df = pd.DataFrame.from_records(rows, columns=columns)
# Xuất ra file Excel
df.to_excel('output_data.xlsx', index=False)
print("Dữ liệu đã được xuất thành công!")
except Exception as e:
print(f"Lỗi: {e}")
finally:
if 'cursor' in locals() and cursor:
cursor.close()
if 'cnxn' in locals() and cnxn:
cnxn.close()
Cách này có thể hơi phức tạp với người mới bắt đầu, nhưng nếu bác nào thường xuyên làm việc với cả Excel và SQL Server thì đây là một giải pháp rất đáng cân nhắc. Có ai đã từng thử cách này chưa ạ? Chia sẻ thêm kinh nghiệm cho em với!