Menu

Tự động trích xuất dữ liệu từ SQL Server vào Excel bằng Python Script

Ninh Yến Sen 08/06/2026 22:56 516 lượt xem 1 trả lời

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ặc xlsxwriter) để 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()
    
  • Tự động hóa: Có thể dùng Task Scheduler (Windows) hoặc cron job (Linux) để chạy script này định kỳ.

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!

0

Hay quá bạn ơi! Mình cũng đang đau đầu với vụ này. Dùng Python để lấy dữ liệu từ SQL Server ra Excel đúng là một hướng đi rất hay, đặc biệt là khi cần xử lý lượng lớn và cập nhật liên tục.

Bạn có thể chia sẻ thêm về cách bạn xử lý bước kết nối SQL Server không? Mình đang dùng pyodbc nhưng đôi khi gặp vấn đề về driver. Nếu bạn có kinh nghiệm với thư viện nào khác hoặc mẹo nhỏ nào thì cho mọi người cùng biết với nhé!

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký