鱼C论坛

 找回密码
 立即注册
查看: 1647|回复: 18

python从csv文件中读取数据到数据库

[复制链接]
发表于 2022-4-28 23:41:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬好,本人在使用python将csv文件读取到sqlite3数据库中已经建好的表的时候,出现了这个错误:sqlite3.OperationalError: near "to": syntax error,想询问是什么原因,
随贴截取部分csv文件的信息如下
Time        Source        Destination        Protocol        Length        Source Port        Destination Port        Info
0        192.168.1.20        192.168.1.50        TCP        60        56790        44818        56790  >  44818 [ACK] Seq=1 Ack=1 Win=7922 Len=0
0        192.168.1.50        192.168.1.40        CIP        116        44818        55872        Success: Service (0x4c)
0.000135        192.168.1.40        192.168.1.50        TCP        60        55872        44818        55872  >  44818 [ACK] Seq=1 Ack=63 Win=8130 Len=0
0.000186        192.168.1.20        192.168.1.30        CIP        116        56784        44818        'HMI_LIT301' - Service (0x4c)
0.000291        192.168.1.20        192.168.1.30        CIP        116        56784        44818        'HMI_FIT301' - Service (0x4c)
0.000291        192.168.1.30        192.168.1.20        TCP        60        44818        56784        44818  >  56784 [ACK] Seq=1 Ack=63 Win=8130 Len=0
0.000292        192.168.1.20        192.168.1.30        CIP        116        56784        44818        'HMI_MV301' - Service (0x4c)
0.000396        192.168.1.30        192.168.1.20        TCP        60        44818        56784        44818  >  56784 [ACK] Seq=1 Ack=125 Win=8068 Len=0
0.000396        192.168.1.60        192.168.1.20        CIP I/O        86                        Connection: ID=0x00F7464A, SEQ=0042190992
0.000396        192.168.1.30        192.168.1.20        TCP        60        44818        56784        44818  >  56784 [ACK] Seq=1 Ack=187 Win=8006 Len=0
0.000584        192.168.1.20        192.168.1.30        CIP        110        44818        56706        Success: Service (0x4c)
0.000667        192.168.1.30        192.168.1.20        TCP        60        56706        44818        56706  >  44818 [ACK] Seq=1 Ack=57 Win=8136 Len=0
0.00123        192.168.1.10        192.168.1.60        CIP        128        64520        44818        'HMI_PLANT_AUTO' - Service (0x4d)
0.001341        192.168.1.60        192.168.1.10        TCP        60        44818        64520        44818  >  64520 [ACK] Seq=1 Ack=75 Win=8118 Len=0
0.001342        192.168.1.10        192.168.1.20        CIP        124        64512        44818        'HMI_P2_PERMISSIVE' - Service (0x4c)
0.001434        192.168.1.10        239.192.2.63        CIP I/O        98                        Connection: ID=0x00708000, SEQ=0008698356

以下是我的代码
import sqlite3
import csv

#数据库连接,建表
conn = sqlite3.connect('networkInfo.db')
cs = conn.cursor()
# cs.execute('''create table netInfo(
#             Time,
#             Source text,
#             Destination text,
#             Protocol text,
#             Length integer,
#             Source_Port text,
#             Destination_port text,
#             Info text
# )''')

with open('netInfo.csv') as f:
    reader = csv.reader(f)
    for row in reader:
        #跳过第一行表头部分
        if row[1] == 'Source':
            continue
        #print(row[1])
        cs.execute(f'insert to netInfo values("{row[0]}","{row[1]}","{row[2]}","{row[3]}","{row[4]}","{row[5]}","{row[6]}","{row[7]}")')
    conn.commit()
conn.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-29 09:15:45 | 显示全部楼层
不是insert into吗  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 10:29:02 | 显示全部楼层


楼上正解吧,插入 SQL 语句写错了 是 insert into ,你写成了 to

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 14:26:15 | 显示全部楼层

修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一项是Standard query 0x0000 PTR _ipps._tcp.local, "QM" question PTR _ipp._tcp.local, "QM" question,好像是数据本身有双引号的问题,不知道如何修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 14:28:21 | 显示全部楼层
Twilight6 发表于 2022-4-29 10:29
楼上正解吧,插入 SQL 语句写错了 是 insert into ,你写成了 to

修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一项是Standard query 0x0000 PTR _ipps._tcp.local, "QM" question PTR _ipp._tcp.local, "QM" question,好像是数据本身有双引号的问题,不知道如何修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 14:30:30 From FishC Mobile | 显示全部楼层
496339041 发表于 2022-4-29 14:28
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一 ...

除非你把excel或者csv发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 14:42:41 | 显示全部楼层
本帖最后由 Twilight6 于 2022-4-29 14:51 编辑
496339041 发表于 2022-4-29 14:28
修改为into以后会报这个错sqlite3.OperationalError: near "QM": syntax error,我在csv文件中查找出那一 ...



会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?
f'insert to netInfo values({row[0]},"{row[1]}","{row[2]}",{row[3]},"{row[4]}","{row[5]}","{row[6]}","{row[7]}")'

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:13:54 | 显示全部楼层
Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?

我草,ok了大佬,非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:16:30 | 显示全部楼层
Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?

看错了大佬,还是会报类似的错误sqlite3.OperationalError: near "to": syntax error
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 15:18:28 | 显示全部楼层
496339041 发表于 2022-4-29 15:16
看错了大佬,还是会报类似的错误sqlite3.OperationalError: near "to": syntax error

哈哈  我拷贝你的代码,忘记把 to 改成 into 了
f'insert into netInfo values({row[0]},"{row[1]}","{row[2]}",{row[3]},"{row[4]}","{row[5]}","{row[6]}","{row[7]}")'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:20:32 | 显示全部楼层
wp231957 发表于 2022-4-29 14:30
除非你把excel或者csv发出来

大佬,我不知道怎么把那个csv文件发上来,想转pdf然后发链接但是那个文件太大了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:22:03 | 显示全部楼层
Twilight6 发表于 2022-4-29 15:18
哈哈  我拷贝你的代码,忘记把 to 改成 into 了

有进展了大佬,报了新的错误sqlite3.OperationalError: no such column: TCP
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:25:53 | 显示全部楼层
Twilight6 发表于 2022-4-29 14:42
会不会是你 insert 引号加多了,试试这样,把第 1 列和第 4 列引号去了?

是要去掉第一列未指定类型的time和第五列整形的length的双引号吗,这俩是row0和row4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 15:28:21 | 显示全部楼层
496339041 发表于 2022-4-29 15:22
有进展了大佬,报了新的错误sqlite3.OperationalError: no such column: TCP



好吧,这好像是因为不加引号引起的,没怎么用过 Python 连接数据库抱歉哈,最后试试这个看看:
f"insert into netInfo values('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}','{row[5]}','{row[6]}','{row[7]}')"

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:35:30 | 显示全部楼层
Twilight6 发表于 2022-4-29 15:28
好吧,这好像是因为不加引号引起的,没怎么用过 Python 连接数据库抱歉哈,最后试试这个看看:

不行,但是非常谢谢大佬了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 15:35:31 From FishC Mobile | 显示全部楼层
496339041 发表于 2022-4-29 15:20
大佬,我不知道怎么把那个csv文件发上来,想转pdf然后发链接但是那个文件太大了

如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:57:39 | 显示全部楼层
wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究

稍等大佬,我在研究怎么把这个zip传上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 16:11:26 | 显示全部楼层
wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究

链接:https://pan.baidu.com/s/1DUcbFuh--f7-aplt8577FQ
提取码:vmo1
--来自百度网盘超级会员V4的分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 18:46:07 | 显示全部楼层
wp231957 发表于 2022-4-29 15:35
如果你实在搞不定,可以把部分文件记录打包rar
发出来,大家帮你研究

已经解决了大佬,用?当占位符就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 16:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表