1. 程式人生 > 其它 >python利用第三方類庫pandas處理csv excel 匯入 匯出 mssql sqlserver 的 demo

python利用第三方類庫pandas處理csv excel 匯入 匯出 mssql sqlserver 的 demo

技術標籤:pythonpandascsvexcelsqlserver

指令碼功能

1 利用python 讀取csv檔案資料 輸出 並寫入到mssql sqlserver 資料庫

2 利用python 從mssql sqlserver 資料庫讀取資料並寫入到csv檔案中

3 用到的三方庫

      pandas 安裝
      pip install pandas
      sqlalchemy 安裝
      pip install sqlalchemy
      pymssql 安裝
      pip install  pymssql

4 pandas.read_csv 分段讀取方法

 pandas.read_csv() 檔案 chunksize=5000 逐步執行 防止python 報 out of memory錯誤

5 python指令碼 原始碼

# -*- coding: utf-8 -*-
# 匯入必要模組
import pandas as pd
from sqlalchemy import create_engine


# 從csv讀取資料到資料庫表中
def imtomssql():
    # 初始化資料庫連線,使用pymssql模組
    engine = create_engine('mssql+pymssql://sa:[email protected]
/rujia'
, connect_args={'charset': 'utf8'}, echo=True) # 初始化資料庫連線 # 讀取本地CSV檔案 path = open(unicode('E:/洩露網際網路/rujia2000w/1-200W.csv', 'UTF8'), 'r') # 設定成一批執行2萬條 df = pd.read_csv(path, sep=',', encoding='utf-8', chunksize=5000, iterator=True, low_memory=False) # df = pd.read_csv("./web.csv", sep=',', encoding='utf-8')
# print(df['instance_description']) # 將新建的DataFrame儲存為sqlserver中的資料表,表如果存在 則 繼續拼接 不儲存index列 for chunk in df: chunk.to_sql('rujia-python', engine, if_exists='append', index=False) print(" running Write to sqlserver...") print("Write to sqlserver successfully!") # 從資料庫中讀取資料輸出到csv檔案中 def readfrommysql(): # 初始化資料庫連線,使用pymysql模組 engine = create_engine('mssql+pymssql://sa:[email protected]/rujia', echo=True) # 查詢語句,選出sys_log表中的所有資料 sql = ''' select * from [1000W-1200W] where Name='王X偉' ''' # read_sql_query的兩個引數: sql語句, 資料庫連線 df = pd.read_sql_query(sql, engine) # 輸出sys_log表的查詢結果 print(df) df.to_csv('export.csv', encoding='utf-8') # 新建pandas中的DataFrame, 只有id,num兩列 # df = pd.DataFrame({'id': [1, 2, 3, 4], 'num': [12, 34, 56, 89]}) # 將新建的DataFrame儲存為MySQL中的資料表,不儲存index列 # df.to_sql('mydf001', engine, index=False) print('Read from and write to mssql sqlserver table successfully!') if __name__ == "__main__": # 匯入到sqlserver庫 imtomssql() # readfrommysql()