前言
i> 最近下了某个数据库,十几GB的纯文本数据也没法直接看,就写了个脚本自动导进数据库
x> 本文仅分享数据处理脚本,不提供数据及其下载方式
'''
# @Author : Chr_
# @Date : 2020-11-25 15:51:26
# @LastEditors : Chr_
# @LastEditTime : 2020-11-25 18:03:46
# @Description : QQ
'''
import pymysql
# 请自行修改为自己的数据库,数据表名为qq,包含id,qq,phone两个字段
db = pymysql.connect("localhost", "root", "123456", "shegong")
sql = 'INSERT INTO `shegong`.`qq`(`qq`, `phone`) VALUES (%s, %s)'
cursor = db.cursor()
print('开始处理')
with open('6.9更新总库.txt',encoding='utf-8') as f:
j = 0
i = 0
pd = False
for line in f:
q,*_,p = line.split('----')
# 如果运行中断,把数据库最后一条数据替换下面的值再重新运行即可
if not pd and q == '3523406341':
pd = True
print('找到结尾')
if not pd:
continue
try:
cursor.execute(sql, (q, p))
i += 1
if i >= 100000:
db.commit()
i = 0
j += 1
print(f'{j}00000 条提交完毕')
except Exception as e:
print(f'存取出错 {q} {p} {e}')
pass
print('文件尾')
db.commit()
db.close()
print('导入完成')
微博
'''
# @Author : Chr_
# @Date : 2020-11-25 16:24:16
# @LastEditors : Chr_
# @LastEditTime : 2020-11-25 18:17:13
# @Description : weibo
'''
import pymysql
# 请自行修改为自己的数据库数据表名为wb,包含id,uid,phone两个字段
db = pymysql.connect("localhost", "root", "123456", "shegong")
sql = 'INSERT INTO `shegong`.`wb`(`uid`, `phone`) VALUES (%s, %s)'
cursor = db.cursor()
print('开始处理')
with open('微博五亿2019.txt', encoding='utf-8') as f:
j = 0
i = 0
pd = False
for line in f:
p,*_, uid = line.split()
# 如果运行中断,把数据库最后一条数据替换下面的值再重新运行即可
if not pd and uid == '15890981333':
pd = True
print('找到结尾')
if not pd:
continue
try:
cursor.execute(sql, (uid, p))
i += 1
if i >= 100000:
db.commit()
i = 0
j += 1
print(f'{j}00000 条提交完毕')
except Exception as e:
print(f'存取出错 {uid} {p} {e}')
pass
print('文件尾')
db.commit()
db.close()
print('导入完毕')
本文链接:https://blog.chrxw.com/archives/2020/11/25/1422.html
转载请保留本文链接,谢谢
35 条评论
为什么我的报错QwQ:
```
File "wb5e.py", line 20
p,*_, uid = line.split()
^
SyntaxError: invalid syntax
```
解决了,必须用py3.x
这个是不是数据表要自己手动创建
是的,数据库结构参考代码
已经成功导入了,之前是数据库的问题。我现在还想问一下如果导入中断了,是吧当前最后一条的qq字段替换成3523406341,那对应行phone字段需要动吗?
21行的qq只是用来定位导入中断的地方用的,读取到以后才会执行导入操作。
卡在这个位置148600000行了 553746669----18604999767后面和前面的格式也没区别啊。
报错:
Traceback (most recent call last):
File "qq.py", line 19, in
q,*_,p = line.split('----')
ValueError: not enough values to unpack (expected at least 2, got 1)
手动跳过这一行即可,21行的qq成下面的qq
貌似是因为python读不了这么多数据,我把后面的数据抠出来一部分就没事了。这个python有的调吗?我试过分割txt但是太大了,分不开
qq那个文件中间有一行是几百万个空格,我的电脑没有报错,你报错可能是内存不够?
不行下一行也提示这个,我在txt里找到了这几行,跟前面的格式没有任何区别。字符我都用文字对比软件对比了,一毛一样
每次导入到148000000条就会中断,然后把py里的那个值改成最后一条QQ还是会从头开始导入,这啥情况
下个断点自己调试下哪里有问题
数据表 shegong.qq
字段 qq 类型 varchar 长度 255
字段 phone 类型 varchar 长度 255
(1146, "Table 'shegong.qq' doesn't exist")
存取出错 526728445 13029916004
检查一下 148659433 行
先处理数据中的空格换行符和格式,保存为新文档,然后手工load file导入
windows下导入会报错
运行闪退啊
可以分享一下数据吗?
总共多少条数据呀?导了几百万还是没结束→_→
5亿条和7亿条
两个多小时才导了4千万数据,这也太慢了,是我电脑太垃圾了嘛
请问这个耗时多久完成?
看服务器性能,我花了大概3天
好的好的,多谢!基于您的源码,我改了一下,jd的也导入进去了
感觉应该做个分表机制的,5亿条查起来太慢了
求分享一下数据吗
求分享
博主可以分享一下数据吗
谢谢
你好,求分享数据可以吗或者数据来源
求分享
可以分享一下数据吗