STUDY WITH ME / Reskilling

セキュリティでは、ゼロトラスト/マイクロセグメンテーション について情報を収集しています。 企業の活動では脱炭素経営について情報を収集しています。 インフラ設計・構築、ハードウェア選定から、アプリ、Javaチューニング、使えるDX、などITコンサルティング業務を会社員として従事しています。   また、脳内から零れ落ちているナレッジ(確認の意味で検索、ど忘れして検索、脳内のバージョンアップ、最新情報へのアップデート)をまとめています。(主に、運用系ツール、開発Java, C++, C#, Python, Swift など)

Python でCSVをSQLを使ってINSERT するコードサンプル

Table of contents
pythonで、CSVファイルを SQLを使ってMySQLに INSERT するサンプルコード
💬 Answer

以下はPythonでCSVデータをSQLに挿入するためのサンプルコードです。

ただし、データベースやCSVのフォーマットによって変更が必要な場合があります。

import csv
import MySQLdb

# MySQLデータベースに接続する
db = MySQLdb.connect("localhost", "username", "password", "database")

# カーソルを取得する
cursor = db.cursor()

# CSVファイルを開く
with open('data.csv', 'r') as file:
    reader = csv.reader(file)

    # CSVの各行を処理する
    for row in reader:

        # SQLクエリを生成する
        query = "INSERT INTO tablename (column1, column2, column3) VALUES (%s, %s, %s)"

        # SQLパラメータを設定する
        values = (row[0], row[1], row[2])

        # SQLクエリを実行する
        cursor.execute(query, values)

        # コミットする
        db.commit()

# MySQLデータベースから切断する
db.close()

このコードでは、MySQLデータベースに接続し、CSVファイルを読み取り、各行をSQLに挿入しています。

INSERT INTO 句には、テーブル名とカラム名を指定し、 VALUES 句には、SQLパラメータを指定しています。

SQLパラメータは、 %s を使用して指定し、実際の値は values 変数に設定します。

最後に、 execute() メソッドを使用してクエリを実行し、 commit() メソッドを使用して変更をコミットします。

最後に、データベースから切断します。

CSVファイルに先頭カラムが存在している場合は上書きする
💬 Answer

以下は、先頭のカラムが存在する場合に、そのカラムの値をキーとしてレコードを更新するようにしたPythonのサンプルコードです。

この例では、MySQLデータベースを使用していますが、他のデータベースでも同様に実行できます。

import csv
import MySQLdb

# MySQLデータベースに接続する
db = MySQLdb.connect("localhost", "username", "password", "database")

# カーソルを取得する
cursor = db.cursor()

# CSVファイルを開く
with open('data.csv', 'r') as file:
    reader = csv.reader(file)

    # CSVの各行を処理する
    for row in reader:
        
        # 先頭カラムの値をキーとする
        key_value = row[0]

        # SQLクエリを生成する
        query = "INSERT INTO tablename (column1, column2, column3) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE column2 = VALUES(column2), column3 = VALUES(column3)"

        # SQLパラメータを設定する
        values = (row[0], row[1], row[2])

        # SQLクエリを実行する
        cursor.execute(query, values)

        # コミットする
        db.commit()

# MySQLデータベースから切断する
db.close()

このコードでは、MySQLの ON DUPLICATE KEY UPDATE 句を使用して、指定されたキーが存在する場合には、指定されたカラムの値を更新します。

先頭カラムの値をキーとして使用するには、 key_value 変数に row[0] を設定します。

INSERT INTO 句には、 VALUES 句と同じ値を指定しますが、 ON DUPLICATE KEY UPDATE 句には、更新するカラムとその値を指定します。

更新する値は、 VALUES 関数を使用して指定します。

0