plsql导出的csv文件太大,对csv文件切割

【参考链接】https://blog.csdn.net/weixin_44999258/article/details/125322316
【问题】数据库导出的csv文件有1.8G,需对文件进行切割
【解决办法】
python脚本对csv文件进行切割
【操作方法】
1.根据参考链接内容,调整下代码如下

import csv
import os

#创建csv文件并写入指定内容
#定义结果文件的生成路径
#result_path = 'D:\autotest\pythonscript\csv拆分'


#准备10000行的csv作为样例,进行拆分
example_path = r"D:\autotest\pythonscript\csv\ASSIST_YN_GRID_USER2.csv" # 需要拆分文件的路径
example_result_dir = r"D:\autotest\pythonscript\csv\result" # 拆分后文件的路径

with open(example_path, 'r', newline='',encoding='utf-8') as example_file:
    example = csv.reader(example_file)
    i = j = 1
    for row in example:
        print(row)
        print(f'i 等于 {i}, j 等于 {j}')
        # 每1000个就j加1, 然后就有一个新的文件名
        if i % 10000 == 0:
            j += 1
            print(f'第{j}个文件生成完成')
        example_result_path = example_result_dir + '\example_result' + str(j) + '.csv'
        print(example_result_path)

        # 不存在此文件的时候,就创建
        if not os.path.exists(example_result_path):
            with open(example_result_path, 'w', newline='',encoding='utf-8') as file:
                csvwriter = csv.writer(file)
                csvwriter.writerow(['这是一个表头'])
                csvwriter.writerow(row)
            i += 1

        # 存在的时候就往里面添加
        else:
            with open(example_result_path, 'a', newline='',encoding='utf-8') as file:
                csvwriter = csv.writer(file)
                csvwriter.writerow(row)
            i += 1

2.操作过程中遇到的问题
问题1:AttributeError: module ‘csv‘ has no attribute ‘reader‘
解决方法:因为python文件命名为csv.py,则需要修改文件名称为test.py,问题则解决

问题2:OSError: [Errno 22] Invalid argument
解决方法:读取文件出现了错误导致的。r"file":意思是指为了避免\xx是一个转义字符而导致的错误,也就是说加上r之后,“”里的就不再出现转义字符,编程纯的文件地址。
修改代码

example_path = 'D:\autotest\pythonscript\csv\ASSIST_YN_GRID_USER2.csv'# 需要拆分文件的路径

修改成

example_path = r"D:\autotest\pythonscript\csv\ASSIST_YN_GRID_USER2.csv" # 需要拆分文件的路径

问题3:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 2: illegal multibyte sequence
解决方法:格式错误,修改代码

...
with open(example_path, 'r', newline='') as example_file:
...
with open(example_result_path, 'w', newline=''') as file:
...
 with open(example_result_path, 'a', newline='') as file:

增加encoding='utf-8',修改成

with open(example_path, 'r', newline='',encoding='utf-8') as example_file:
...
with open(example_result_path, 'w', newline='',encoding='utf-8') as file:
...
 with open(example_result_path, 'a', newline='',encoding='utf-8') as file:
...
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容