|  |      1TimeLe      2014-07-03 13:14:17 +08:00 边读取 边入库操作 可否? | 
|  |      2breeswish      2014-07-03 13:15:55 +08:00 按行读取文件内容,每读满50个就存进去 不要一次性全读入再一次性全分割再一次性存进去..&#$^@(* | 
|  |      4shiny      2014-07-03 13:18:00 +08:00 边读边入库+1,可以考虑 fgets,文件大的时候很有用。 | 
|  |      6bearcat001      2014-07-03 13:47:02 +08:00 1. 大文件都是按行读的,读够50条,将50条写成一条SQL存入数据库 2. 或者边读边写生成一个格式化的文件文件用LOAD DATA来存入数据库 | 
|  |      7TimeLe      2014-07-03 13:51:25 +08:00 @bearcat001 LZ貌似说这种效率底下 内存占用高 | 
|  |      8bearcat001      2014-07-03 14:02:21 +08:00 @TimeLe 方法1是最省内存的,1+50的内存占用,存储效率适中 方法2只需要1的占用,存储效率较高 我之前测试过这几种方法,具体看这里 http://yansu.org/2014/04/16/insert-large-number-of-data-in-mysql.html | 
|  |      9Tonni      2014-07-03 14:08:48 +08:00 楼主博客主题是什么? | 
|  |      10TimeLe      2014-07-03 15:37:31 +08:00 @bearcat001 恩.已看 顺便博客写的不错 | 
|  |      12Actrace      2014-07-04 00:15:03 +08:00 打开文件句柄后使用fseek手动完成行切操作,这样你就可以控制每次读入的长度,并且不占用大量内存。 | 
|  |      13xieranmaya      2014-07-05 11:52:08 +08:00 才50万行,一边读一边写,用py啊,分分钟就ok了。 我做过5万多行的,需求跟你一模一样,不过一行特别长,文件总大小100M+,几秒钟就搞定了 还有py代码呢,我来找找 import os import sys import platform print(platform.python_version()) lpf = 4000 # line per file bigfile = open('bigfile.txt',encoding='utf8') part = 10 # 为了文件名长度一致 while True: parts = open(str(part)+'.dat','w',encoding='utf8') part += 1 for i in range(0,lpf): line = bigfile.readline() if not line: parts.close() bigfile.close() sys.exit() parts.write(line) parts.close() bigfile.close() |