| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import csv
- import os
- import glob
- import psycopg2
- # 数据库连接配置信息
- db_config = {
- 'host': 'localhost', # 数据库主机地址
- 'database': 'test', # 数据库名
- 'user': 'jack', # 数据库用户名
- 'password': 'aaaAAA111' # 数据库密码
- }
- # 获取当前目录
- current_directory = os.getcwd()
- # 使用glob模块找到当前目录下所有的CSV文件
- csv_files = glob.glob(os.path.join(current_directory, '*.CSV'))
- # 连接到PostgreSQL数据库
- conn = psycopg2.connect(**db_config)
- cursor = conn.cursor()
- row_num = 0
- # 遍历找到的CSV文件
- for file_path in csv_files:
- print(f'正在读取CSV文件: {file_path}')
- # 打开CSV文件
- with open(file_path, mode='r', newline='', encoding='utf-8') as file:
- csv_reader = csv.reader(file)
- # 遍历CSV文件中的每一行
- for row in csv_reader:
- try:
- # 拆分字段
- epc, qrcode = row[0].split(' ', 1)
- # 插入数据到数据库
- insert_query = "INSERT INTO test_sort_epc (epc, qrcode) VALUES (%s, %s);"
- cursor.execute(insert_query, (epc, qrcode.replace(' ', '')))
- print(f'第{row_num+1}行: 数据插入成功。')
- except ValueError:
- print(f'第{row_num+1}行: 错误 - 无法将数据拆分为两个字段。')
- row_num += 1
- print(f'一共 {row_num} 行数据')
- # 提交事务
- conn.commit()
- # 关闭数据库连接
- cursor.close()
- conn.close()
- print('所有数据已写入数据库, 程序执行完毕')
|