Pythonプログラムの例:CSVファイルをSQLiteデータベースにインサートする

以下は、指定されたCSVファイルの内容をSQLiteSAMPLEDBテーブルにインサートするためのPythonプログラムの例です。このプログラムは、以下の手順を実行します:

  1. コマンドライン引数からCSVファイルのパスを取得します。
  2. SQLiteデータベースに接続し、SAMPLEDBテーブルの内容を全て削除します。
  3. CSVファイルからデータを読み込み、SAMPLEDBテーブルにインサートします。
  4. 何らかのエラーが発生した場合、そのエラー内容をerrlog.txtに書き出します。
import csv
import sqlite3
import sys

# コマンドライン引数からCSVファイルのパスを取得
csv_file_path = sys.argv[1]

# SQLiteデータベースのパス(適宜変更してください)
db_path = 'path_to_your_database.db'

def import_csv_to_sqlite(csv_path, db_path):
    try:
        # データベースに接続
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()
        
        # SAMPLEDBテーブルの内容を全て削除
        cursor.execute('DELETE FROM SAMPLEDB')
        
        # CSVファイルを開き、各行をSAMPLEDBテーブルにインサート
        with open(csv_path, 'r', encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file)
            next(reader)  # ヘッダー行をスキップ
            for row in reader:
                cursor.execute('INSERT INTO SAMPLEDB (column1, column2, column3) VALUES (?, ?, ?)', row)
        
        # 変更をコミット
        conn.commit()
    except Exception as e:
        # エラー内容をerrlog.txtに書き出し
        with open('errlog.txt', 'a', encoding='utf-8') as log_file:
            log_file.write(f'{e}\n')
    finally:
        # データベース接続を閉じる
        if conn:
            conn.close()

if __name__ == '__main__':
    import_csv_to_sqlite(csv_file_path, db_path)

このスクリプトを使用する前に、以下の点に注意してください:

  • db_path を実際のSQLiteデータベースファイルのパスに変更してください。
  • SAMPLEDB テーブルと対応するカラム名を、実際のテーブル名とカラム名に合わせて変更してください。この例では、単純化のために column1, column2, column3 というカラム名を使用しています。
  • CSVファイルの構造がテーブルの構造と一致していることを確認してください。異なる場合は、インサート文を適宜変更する必要があります。
  • このコードはPython 3で動作するように書かれています。実行するにはPython 3がインストールされている必要があります。