ChatGPT(チャットジーピーティー)とは、OpenAI社が2022年11月30日に公開したAIチャットボットサービスで、質問や要望を日本語でテキストに入力すると、チャット形式で、日本語で自然な回答を返してくれて大変便利である。
今回は、CSVファイルのデータをSQL Serverのテーブルに格納するプログラムを作成する方法を、ChatGPTで質問してみたので、その結果を共有する。
ただし、2023年6月3日現在、ChatGPTには最新のデータが搭載されていない影響で、誤った回答が返ってくることがあるため、注意して利用する必要がある。詳細は以下のサイト等を参照のこと。
https://did2memo.net/2023/02/15/chatgpt-old-data-issue/
前提条件
以下の記事のChatGPTアカウント作成が完了していること。
ChatGPTでのプログラミングの質問
ChatGPTで、CSVファイルのデータをSQL Serverのテーブルに格納するプログラムを作成する方法を質問した結果は、以下の通り。
1) ChatGPTにログインするため、以下のURLにアクセスし「Try ChatGPT」ボタンを押下後、「Log in」ボタンを押下する。
https://openai.com/blog/chatgpt
2) ChatGPTにログイン後、質問「CSVファイルのデータをSQL Serverのテーブルに格納するプログラムを作成したい」を入力し、右横のボタンを押下する。

3) 以下のように、一瞬のうちに、Pythonで、質問内容の機能を実現するプログラム例を作成してくれることが確認できる。

4) 以下の赤枠の「Copy code」ボタンを押下すると、自動生成されたプログラムのコピーが行える。

実際にコピーした内容は以下の通りで、表示されている内容がそのままコピーできていることが確認できる。
import pyodbc
import pandas as pd
# SQL Serverの接続情報
server = 'サーバー名'
database = 'データベース名'
username = 'ユーザー名'
password = 'パスワード'
driver = '{ODBC Driver 17 for SQL Server}' # 使用するODBCドライバーに応じて変更してください
# CSVファイルのパスとテーブル名
csv_file = 'ファイルパス.csv'
table_name = 'テーブル名'
# SQL Serverへの接続
conn_str = f'server={server};database={database};uid={username};pwd={password};driver={driver}'
conn = pyodbc.connect(conn_str)
# CSVファイルの読み込み
df = pd.read_csv(csv_file)
# テーブル作成
create_table_query = f"CREATE TABLE {table_name} ({', '.join([f'[{col}] NVARCHAR(MAX)' for col in df.columns])})"
conn.execute(create_table_query)
# データの挿入
insert_query = f"INSERT INTO {table_name} ({', '.join([f'[{col}]' for col in df.columns])}) VALUES ({', '.join(['?' for _ in df.columns])})"
conn.executemany(insert_query, df.values.tolist())
# コミットと接続のクローズ
conn.commit()
conn.close()
print("データの格納が完了しました。")5) 次に「このプログラムをWindowsバッチファイルで作成したい」という質問をすると、以下の回答が返ってくることが確認できる。この質問をしたのは、質問した内容の機能を、 PythonでなくWindowsバッチファイルで実行したいためである。

このときのプログラム内容は以下の通りで、Windowsバッチファイルで、Pythonのプログラムの内容を呼び出す形になっている。
@echo off
set SERVER=サーバー名
set DATABASE=データベース名
set USERNAME=ユーザー名
set PASSWORD=パスワード
set DRIVER="{ODBC Driver 17 for SQL Server}"
set CSV_FILE=ファイルパス.csv
set TABLE_NAME=テーブル名
echo CSVファイルのデータをSQL Serverのテーブルに格納します...
python -c "import pyodbc; import pandas as pd; conn_str = 'server=%SERVER%;database=%DATABASE%;uid=%USERNAME%;pwd=%PASSWORD%;driver=%DRIVER%'; conn = pyodbc.connect(conn_str);df = pd.read_csv('%CSV_FILE%'); df = pd.read_csv('%CSV_FILE%'); create_table_query = f'CREATE TABLE %TABLE_NAME% ({', '.join([f'[{col}] NVARCHAR(MAX)' for col in df.columns])})';conn.execute(create_table_query);insert_query = f'INSERT INTO %TABLE_NAME% ({', '.join([f'[{col}]' for col in df.columns])}) VALUES ({', '.join(['?' for _ in df.columns])})'; conn.executemany(insert_query, df.values.tolist()); conn.commit(); conn.close(); print('データの格納が完了しました。')"
echo 格納が完了しました。
pause6) さらに「このプログラムをWindowsバッチファイルでPythonを利用しないで作成したい」という質問をすると、以下の回答が返ってくることが確認できる。この質問をしたのは、質問した内容の機能を、 Pythonを使わない環境で実行したいためである。

このときのプログラム内容は以下の通りで、Windowsバッチファイルで、bcpコマンドを呼び出すプログラムの回答が返ってくることが確認できる。
@echo off
set SERVER=サーバー名
set DATABASE=データベース名
set USERNAME=ユーザー名
set PASSWORD=パスワード
set DRIVER="{ODBC Driver 17 for SQL Server}"
set CSV_FILE=ファイルパス.csv
set TABLE_NAME=テーブル名
echo CSVファイルのデータをSQL Serverのテーブルに格納します...
REM ODBCデータソースの設定
echo [ODBC] > odbc.ini
echo Driver=%DRIVER% >> odbc.ini
echo Server=%SERVER% >> odbc.ini
echo Database=%DATABASE% >> odbc.ini
echo UID=%USERNAME% >> odbc.ini
echo PWD=%PASSWORD% >> odbc.ini
REM CSVファイルの内容を一時テーブルにインポート
bcp %TABLE_NAME% in %CSV_FILE% -c -T -F 2 -r "\n" -S %SERVER% -d %DATABASE% -U %USERNAME% -P %PASSWORD%
echo 格納が完了しました。
pauseなお、bcpコマンドの詳細は、以下の記事を参照のこと。
7) 「ありがとうございます。解決しました!」とコメントすると、以下のように、律儀に返信を返してくれることが確認できる。

要点まとめ
- ChatGPTでは、作成したいプログラムの機能を質問すると、一瞬のうちに、質問内容の機能を実現するプログラム例を作成してくれる。
- 2023年6月3日現在、ChatGPTには最新のデータが搭載されていない影響で、誤った回答が返ってくることがあるため、注意する必要がある。


