导入mysql自动关闭_CSV导入MySQL数据库被意外截断解决

如下图,就可能会被意外截断.

cc0fbaa16698cc20559e4e00f1d4aca9.png

还有就是导入完毕有这样的警告,也有可能是截断错误.(当然也有可能字段太小)

05627a36a75294ab9159c358f87488bc.png

想到的解决办法有几个.

用JSON保存爬虫数据,但是导入MySQL需要自己处理.

在爬取时候替换逗号为中文逗号,会降低爬虫效率.

边爬取边入库,会使用数据库资源,成本高.

对现有CSV文件进行处理,用Python MySQL方式入库,入库效率较低.

对现有CSV文件处理,然后修改替换入库,效率最高,任务分离,我选择这种方法.

要对标题,章节标题,内容进行逗号替换.

代码如下,

import csv

import sys

csv.field_size_limit(sys.maxsize)

with open('./ScrapyBooks-all.csv', newline='', encoding='utf-8') as f,open('./ScrapyBooks-new.csv', 'w', newline='', encoding='utf-8') as wf:

reader = csv.reader(f)

writer = csv.writer(wf)

for row in reader:

row[0] = row[0].replace(',',',')

row[1] = row[1].replace(',',',')

row[4] = row[4].replace(',',',')

writer.writerow(row)

wf.flush()

虽然只是简单的字符串替换,但是依然吃光CPU,然后替换完了,再导入这个文件,这个问题自然就解决了…

2019-12-17 更新,标题和内容全部都替换了,但是依然出现了截断问题.

beeb48891d8216354d3365e94155185b.png

根据下面推断,应该有40多篇文章是出现错误的,每个WARNING大概显示4次,172/4=43篇.

fd7822082b4c584228e7836f250eed05.png

再观察.

fbc1e9219e5a2059344fb3bab09aa77a.png

303章是存在的,那是什么原因导致二次入库呢?这个二次入库是否影响提取呢?如果不影响二次提取,这就是个可以忽略的警告,否则就要处理它,首先发现同是303章,内容不一样.

经过和源站对比,实际内容是采集错误的部分 + 采集正确部分拼起来才对.

分割点正是我高亮的字符…

42ba9d1e9e423fe0eff12334e9d81baa.png

原来是被”号分割了.. 同时被#13,#10这个换行符分割了.

135960d83a431897b0a36846bd7a02e9.png

只好分号也一起换了.

import csv

import sys

csv.field_size_limit(sys.maxsize)

with open('./ScrapyBooks-all.csv', newline='', encoding='utf-8') as f,open('./ScrapyBooks-new.csv', 'w', newline='', encoding='utf-8') as wf:

reader = csv.reader(f)

writer = csv.writer(wf)

for row in reader:

row[0] = row[0].replace(',',',').replace('"','').replace('\r\n','')

row[1] = row[1].replace(',',',').replace('"','').replace('\r\n','')

row[4] = row[4].replace(',',',').replace('"','').replace('\r\n','')

writer.writerow(row)

wf.flush()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值