精华内容
下载资源
问答
  • mysql导入超大csv指南

    2020-08-31 00:41:16
    mysql导入超大csv指南 文章目录mysql导入超大csv指南需求描述失败方法正确食用方法其他处理超大csv的经验 需求描述 手头下载了一个比较大(400Mb+)的语料数据,需要从里面提取出某两种语言的句子对,因为数据特别大...

    mysql导入超大csv指南

    需求描述

    手头下载了一个比较大(400Mb+)的语料数据,需要从里面提取出某两种语言的句子对,因为数据特别大,且csv并非标准以逗号分隔而是以tab分隔,尝试用Navicat的导入向导导入失败。

    另外以后也可能会有处理超大csv的场景,mark一下方法备用。

    失败方法

    一开始打算直接用Navicat进行导入,尝试了一下输入向导。这里一个坑点:如果你选择csv格式,字段分隔符是不可选的,如下图。

    这时候可以在上一步就选择文本txt,然后就可以自定义分隔符了,如下图。

    虽然但是这里也没有tab(\t)的选项,其他那里莫名其妙只能输入一个字符,所以也输入不了\t,尝试直接下一步会一直卡住,虽然没有显示无响应但是一直在处理中,等了半个小时也不管用,所以这个方法不行。

    正确食用方法

    实验环境:mysql 8.0 @ win10

    使用Navicat进行操作

    实际上mysql是可以直接读csv文件来进行导入的,方法也超级简单。

    首先需要放开允许本地导入文件

    SET GLOBAL local_infile = 'ON';
    

    看到下面执行结果为OK就可以了,然后进行导入。

    LOAD DATA LOCAL INFILE 'PATH_TO_CSV_FILE' INTO TABLE TABLE_NAME
    	FIELDS
    		TERMINATED BY '\t'
    	LINES TERMINATED BY '\n'
    (FIELD1, FIELD2, ...);
    

    填入csv的路径和表名,然后TERMINATED BY就是分隔符,后面LINE TERMINATED BY是每行结束的标志,一般来说是换行符\n,后面field就是数据库中指定的字段。运行以后,需要等待一段时间,这个时间取决于数据库io速度了。我这里做了一次清空表再做导入,可能IO比较忙,用了快三分钟,第一次导入的时候只用了78秒,速度还是蛮快的。另外这里也可以看到数据量蛮大的,一共800w+条。

    其他处理超大csv的经验

    如果需要打开一个超大的csv,千万不要用记事本(Notepad)打开,百分百卡死。

    如果只需要进行文本编辑,可以使用vscode,打开很快,保存也比较快,但不方便进行简单编辑以外其他操作。其次使用pycharm自带的文本编辑器也能够比较快地打开超大的csv。也有推荐说用UltraEdit之类的打开的,因为vscode现有,不再测试。

    可以使用Excel的从csv导入的功能(在数据-从文本/csv),另外也可以选择文件编码(如utf-8)和分隔符,他也能够自动检测(不太好用)。预览一下没问题点加载即可。但是excel有行数限制(大概),反正这份超大的语料我就无法加载。

    另外如果使用excel直接打开utf-8编码的csv会出现乱码,因为win的默认编码是gbk(目前可以把win的全局编码设置成utf-8,该设置在地区与语言里,但是开启后不支持utf-8编码的软件可能会出现文件夹乱码、软件界面乱码等奇怪的情况,还是不能开启)。同时也无法识别逗号以外分隔符的csv。因此必须用导入的方法打开。

    展开全文
  • Excel打开超大csv格式数据 转载自: link

    Excel打开超大csv格式数据

    转载自: link

    展开全文
  • 处理超大CSV文件时,文件中有空字符NULL如\x00这样的,导致读取失败。 这时候使用命令 sed -i 's/\x00//g' <你的csv文件名> 或者 sed 's/\x00//g' <<你的csv文件名>> > 新文件名 就能除去...

    处理超大CSV文件时,文件中有空字符NULL如\x00这样的,导致读取失败。
    这时候使用命令

    sed -i 's/\x00//g' <你的csv文件名>
    

    或者

    sed 's/\x00//g' <<你的csv文件名>> > 新文件名 
    

    就能除去其中的\x00,sed是流编辑器,效率高,不占内存,如果此时你用其他代码去处理文件,如果文件高达20GB,那么电脑就死掉了。
    其中的-i表示就地改变源文件。
    用python脚本查看文件中是否还有特定字符

        fi = open('你的csv路径', 'rb')
        data = fi.read()
        fi.close()
        print(data.find(bytes('\x00'.encode('utf8'))))
    

    如果没有,则输出-1。

    展开全文
  • Pandas分割超大csv文件(涉及文件编码问题) 主要解决利用pandas分割csv文件时因文件太大出现 memory error的问题。 以及预防文件乱码。 建议先做好文件探查再确定每个文件具体保存多少行。 # 分割文本容量很大很大...

    Pandas分割超大csv文件(涉及文件编码问题)

    主要解决利用pandas分割csv文件时因文件太大出现 memory error的问题。
    以及预防文件乱码。
    建议先做好文件探查再确定每个文件具体保存多少行。

    # 分割文本容量很大很大的csv文件  Moira 2021.3.4
    
    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    import csv
    import pandas as pd
    # 读入的时候一定看一下文件的编码格式,可以用记事本查看
    # 如果编码是加了BOM的UTF-8,一定要在读入的时候声明encoding='utf-8_sig'
    path = "E:/Data.csv"
    data = pd.read_csv(path, sep=',', engine='python', iterator=True, encoding='utf-8_sig')
    loop = True
    # 设定每个文件保存40w行
    chunkSize = 400000
    chunks = []
    i = 0
    while loop:
        try:
            print(i)
            chunk = data.get_chunk(chunkSize)
            chunks.append(chunk)
            # 文件命名格式:路径名字_i.csv
            file_name = r'路径名字_' + str(i) + '.csv'
            # encoding='utf_8_sig' 是为了保证编码格式符合要求;  header=True是为了保留字段名称
            chunk.to_csv(file_name, encoding="utf_8_sig", index=False, header=True)
            i += 1
        except StopIteration:
            loop = False
            print("Iteration is stopped.")
    # 懒得删除
    print('开始合并')
    data = pd.concat(chunks, ignore_index=True)
    

    python入门失败无数次,奈何服务器扑街,只能集众家之长组装出这么一段代码,欢迎讨论,但是有问题也不要问我,多半我解决不了。

    参考链接:
    ① 用pandas处理大型csv文件并分块处理大文件
    ②python使用chunk进行大文件的读写
    ③关于utf-8与utf_8_sig的区别
    ④解决Python memory error的问题

    展开全文
  • pandas读取超大csv文件失败的一个解决办法 如下是我原本代码的一部分。代码中读取的csv文件有几个G大。本来前一天还可以正常读取并且输出data_x和data_y,但是转天就什么也print了。于是我挨行debug,最后发现其实...
  • 超大csv解析攻略

    2019-09-15 21:33:16
    前段时间遇到这样一个需求,解析csv文件数据,将数据封装批量...所以为了能够成功解析这个超大文件,博主查阅了大量的博客,终于攻克这个问题了。因为这个坑相对比较大,所以这边给大家分享一下,博主的心路历程,...
  • 实惨,为了用java读取超大csv文件 可以读一读小文件,但是我要弄的文件是接近10G的 package text; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; //import text1....
  • PHP 超大csv浏览器下载

    2019-09-11 10:16:25
    set_csv_header('test_max.csv'); //设置头部 $sql = "select id, name, sex,age from test"; //查询sql ob_end_clean(); //清除内存 ob_start(); $per_limit = 20000; //每次取数据2w(大约2M的数据,可调整...
  • filename = '123.csv'#需要统计csv路径名+文件名 df = dd.read_csv(filename,usecols=['date'])#需要统计的列名 print("总行数为:",len(df)) #对于超过千万行的csv进行统计 可以尝试使用dask模块的read_csv进行统计...
  • 把10个G左右的csv文件导入mysql(只有一个csv文件,在本地) 工具:Navicat Premium 12&mysql workbench 8.0 CE 数据库:MySQL 8.0 navicat导入向导 导入方法不赘述 ...之前数据库装在c盘的时候,大概一天多导入了...
  • 处理超大csv文件的方案

    千次阅读 2020-01-07 12:01:06
    在平时我们用PHP去处理读取csv文件导数据入库的时候,一般都会不约而同的想到...但是这里面存在一个性能的问题,对一些小的csv文件,1万行数据以内基本可以轻松使用,但是数据量偏大了,会有一个内存的问题,你会...
  • 基本思路就是,知道总数之后分割成2万一个数组进行查询,最后独立写入csv,避免数据过大导致溢出 速度还不错,在php7下,机器I5 8G内存,128G,SSD,52W多条,大概也就30秒,出来整个文件38.2M $per = 10000; 37秒 $...
  • 如果一个csv文件过大,比如说达到好几G,直接读取的话内存估计hold不住,幸好pandas支持使用chunksize指定行数,每次按多少行多少行来读取,这样就避免了一次性读取过多数据导致内存崩溃。 用row["某个列的名称"] ...
  • 很多时候处理数据会碰到CSV文件,如果是一般的少量文件问题不大,一旦碰到大型的CSV文件,就会出现打不开文件的结果。因为文本无法打开超大型文件,Excel也最多能够容量一百万条数据量,因此只能将CSV文件切割成为多...
  • Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件;它运行的速度非常快,反应非常灵敏。 我们拿四份文件进行测试,对比一下他们打开大文件的性能:loan_theme_ids.csv(30.1m)、...
  • path = '../data/' reader = pd.read_csv(path+'train_20190518.csv', iterator=True, names=['label','uid','adid','operTime','siteid','slotid','contentid','netType']) loop = True chu...
  • 最近在做毕业设计,遇到一个问题,在使用R读取上市公司数据时...大家比较熟知R读取csv格式文件的函数是R内置的`read.csv()`,但除此之外还有其他的,比如`readr`包的`read_csv()`函数和`data.table`包的`fread()`函数。
  • import csv,re import pandas as pd import shlex save_f=open('cellrelation.csv','w') with open('./EUtranCellRelation.csv','r') as cellrelation: for line in cellrelation: s=shlex.shlex(line) #print...
  • GAE 的BulkUpload 确实不错,解决了大批量...2) 当CSV文件&gt; 15M 时(估计) 批量上传时会报 field larger than field limit 错误.  解决办法,修改 bulkloader.py 文件 (该文件在 GAE安装目录下,搜下就行啦...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,814
精华内容 1,525
关键字:

超大csv