read_csv.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import csv
  2. import os
  3. import glob
  4. import psycopg2
  5. # 数据库连接配置信息
  6. db_config = {
  7. 'host': 'localhost', # 数据库主机地址
  8. 'database': 'test', # 数据库名
  9. 'user': 'jack', # 数据库用户名
  10. 'password': 'aaaAAA111' # 数据库密码
  11. }
  12. # 获取当前目录
  13. current_directory = os.getcwd()
  14. # 使用glob模块找到当前目录下所有的CSV文件
  15. csv_files = glob.glob(os.path.join(current_directory, '*.CSV'))
  16. # 连接到PostgreSQL数据库
  17. conn = psycopg2.connect(**db_config)
  18. cursor = conn.cursor()
  19. row_num = 0
  20. # 遍历找到的CSV文件
  21. for file_path in csv_files:
  22. print(f'正在读取CSV文件: {file_path}')
  23. # 打开CSV文件
  24. with open(file_path, mode='r', newline='', encoding='utf-8') as file:
  25. csv_reader = csv.reader(file)
  26. # 遍历CSV文件中的每一行
  27. for row in csv_reader:
  28. try:
  29. # 拆分字段
  30. epc, qrcode = row[0].split(' ', 1)
  31. # 插入数据到数据库
  32. insert_query = "INSERT INTO test_sort_epc (epc, qrcode) VALUES (%s, %s);"
  33. cursor.execute(insert_query, (epc, qrcode.replace(' ', '')))
  34. print(f'第{row_num+1}行: 数据插入成功。')
  35. except ValueError:
  36. print(f'第{row_num+1}行: 错误 - 无法将数据拆分为两个字段。')
  37. row_num += 1
  38. print(f'一共 {row_num} 行数据')
  39. # 提交事务
  40. conn.commit()
  41. # 关闭数据库连接
  42. cursor.close()
  43. conn.close()
  44. print('所有数据已写入数据库, 程序执行完毕')