PR

【Python】テーブルのレコードをCSVファイルへ出力する【SQL Server】

Pythonから
 ・テーブルのレコードをCSVファイルへ出力
できます!

テーブルのレコード
テーブルのレコード

出力するCSVファイルには
 ・列名(カラム名)も出力
されます!

出力するCSVファイル
出力するCSVファイル

前提

・Pythonがインストールされていること
・Pythonライブラリ「pandas」がインストールされていること
・sqlcmdが使用可能であること

コード

ここでは例として
 ・SQL Server上のDB「sampleDB」にあるテーブル「employee」のレコードを
 ・CSVファイルへ出力
します。
※列名(カラム名)も出力します。

import subprocess
import pandas as pd

csvFile=r"C:\Users\user\Desktop\sample.csv"

# sqlcmd組み立て
sqlcmd = "sqlcmd -S {serverName} -d {dbName} -E -s \",\" -W -o {csvFile} -Q \"{query}\" ".format(
    csvFile=csvFile,
    serverName='localhost\SQLEXPRESS',
    dbName='sampleDB',
    userName='XXXXX',
    password='XXXXX',
    query='SET NOCOUNT ON; SELECT * FROM employee'
)

# sqlcmd実行
subprocess.run(sqlcmd, shell=True)

# CSVファイルの読み込み
df = pd.read_csv(csvFile, encoding='shift_jis')
# レコードの0行目(「--」の行)を削除
df = df.drop(0, axis=0)
# CSVファイルへ書き込み
df.to_csv(csvFile, encoding='shift_jis')

以下を指定します(8~13行目)。
※状況に合わせて適時修正してください。

・出力するCSVファイル名
・サーバー名
・DB名
・ユーザー名
・パスワード
・クエリ

「subprocess」を使用してsqlcmdを実行します(17行目)。
※「subprocess」は標準ライブラリです。よってpipによるインストールは不要です。

CSVファイルの読み込み時/書き込み時に「文字コード」を指定します(20、24行目)。
※上記では「shift_jis」を指定しています。

「レコードの0行目(「–」の行)」を削除します(22行目)。

実行結果

テーブルのレコードをCSVファイルへ出力できました。

実行結果①
実行結果①
実行結果②
実行結果②
タイトルとURLをコピーしました