【发布时间】:2020-12-16 02:11:36
【问题描述】:
我正在尝试使用 python 3.8 从 csv 文件中导入日期时间字符串,但运行代码时控制台返回错误:
ValueError: 时间数据'.Device[12].Measure is execution' 与格式'%Y-%m-%d %H:%M:%S'不匹配
CSV文件中的日期时间格式为:2020-12-09 00:00:00.8380
我正在使用代码:
import os
import shutil
import csv
import pyodbc
import pandas as pd
from datetime import datetime
conn = pyodbc.connect('Driver={SQL Server};'
'Server=MXESL10739\SQLEXPRESS;'
'Database=MITSF_1;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
print ('good connection')
fields = []
new = []
path1 = 'C:\\Users\\sguerra\\Desktop\\MITSF1\\Controller 2020-12-09.log'
print ('good')
with open(path1, 'r') as csvfile:
# creating a csv reader object
csvreader = csv.reader(csvfile)
# extracting each data row one by one
for row in csvreader:
for col in row:
if col.startswith('20'):
new.append(col.split(' | '))
df = pd.DataFrame(new,columns = ['column1','column2','column3','Now'])
for row in df.itertuples():
cursor.execute('''
insert into MITSF_1.dbo.Controller ([Column 1] ,[Column 2] ,[Column 3], [Now])
VALUES (?,?,?,?)
''',
row.column1,
row.column2,
row.column3,
datetime.strptime(row.Now, '%Y-%m-%d %H:%M:%S').date()
)
conn.commit()
非常感谢您的帮助。
【问题讨论】:
-
你为什么不使用 pandas
pd.to_datetime()以及为什么不进行完整插入而不是逐行插入?