CMD的命令自带的有分割命令,不过对于TXT文本内的数据无法准确的断点,这样导致我们多线程导入数据的时候。会出错只能舍弃一些数据。
所以我想,可不可以指定一个大小,使用python,让程序在此基础上,往后找到合适的断点位置,这里我使用的是换行符。
[Python] 纯文本查看 复制代码if __name__ == "__main__":
path="E:\\download\\测试数据.txt"
with open(path,"rb") as fp:
# 设置分割的大小,单位k
size=300
size=size*1024
# 开始位置
start=0
# 读取的最终位置
end=0
# 计数器
i=1
byte=b"0"
while byte!=b"":
# 设置指针位置,主要是为了查找指针后面\n的位置,这个操作简称为“寻值”
fp.seek(end+size,0)
byte=fp.read(1)
i+=1
# 寻值
while byte!=b"\n" and byte!=b"":
byte=fp.read(1)
end=fp.tell()
# 存入文件
with open("E:\\download\\a\\1\\"+str(i*1)+".txt","wb") as fp1:
fp.seek(start,0)
fp1.write(fp.read(end-start))
start=end
分割后的数据,可以使用CMD命令“type ./*.txt >> ./11.txt”进行合并,我生成了一份测试TXT文本,使用这段代码进行了分割,最后再进行,合并,导入到EXCEL软件中,进行数据的对比,最终得到的结果,无数据丢失。
本来,我还想写多线程导入数据库来着的,不过这段代码我有已经看不懂了,处于玄学状态,测试的是没问题,不过不保证真的不出问题。
个人测试一个40G的文本,分割成1G的单文本(分割2G会报错,我也不知道为啥),总共需要约4分钟。
如果再使用多线程直接导入数据的话,相信速度就会快起来了。
PS:测试文本的数据是我用EXCEL直接生成的,不是啥机密数据
测试数据.txt
(964 KB, 下载次数: 0)
2023-2-1 00:57 上传
点击文件名下载附件
测试数据,这是随机生成的,没有啥秘密
下载积分: 吾爱币 -1 CB