在本文中,我们将为您详细介绍从php[copy]中的csv文件中读取大数据的相关知识,并且为您解答关于php导出csv大数据的疑问,此外,我们还会提供一些关于(PHP)海量数据输出CSV文件时由于特殊
在本文中,我们将为您详细介绍从php [copy]中的csv文件中读取大数据的相关知识,并且为您解答关于php导出csv大数据的疑问,此外,我们还会提供一些关于(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、javascript – 无法从节点中的csv文件流中读取重音字符、Java从.CSV文件中读取数据和写入(转)的有用信息。
本文目录一览:- 从php [copy]中的csv文件中读取大数据(php导出csv大数据)
- (PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
- javascript – 无法从节点中的csv文件流中读取重音字符
- Java从.CSV文件中读取数据和写入(转)
从php [copy]中的csv文件中读取大数据(php导出csv大数据)
我正在读csv&用MysqL检查记录是否存在于我的表中或不存在于PHP中.
csv有大约25000条记录&当我运行我的代码时,它在2分10秒后显示“服务不可用”错误(onload:2m 10s)
这里我添加了代码
// for set memory limit & execution time ini_set('memory_limit','512M'); ini_set('max_execution_time','180'); //function to read csv file function readCSV($csvFile) { $file_handle = fopen($csvFile,'r'); while (!feof($file_handle) ) { set_time_limit(60); // you can enable this if you have lot of data $line_of_text[] = fgetcsv($file_handle,1024); } fclose($file_handle); return $line_of_text; } // Set path to CSV file $csvFile = 'my_records.csv'; $csv = readCSV($csvFile); for($i=1;$i<count($csv);$i++) { $user_email= $csv[$i][1]; $qry = "SELECT u.user_id,u.user_email_id FROM tbl_user as u WHERE u.user_email_id = '".$user_email."'"; $result = @MysqL_query($qry) or die("Couldn't execute query:".MysqL_error().''.MysqL_errno()); $rec = @MysqL_fetch_row($result); if($rec) { echo "Record exist"; } else { echo "Record not exist"; } }
注意:我只想列出我表中不存在的记录.
请建议我解决这个问题……
解决方法
此方法在http://www.cuddlycactus.com/knownpasswords/(页面已被删除)中使用,仅在几毫秒内搜索1.7亿个密码.
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx 很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。 例如: $csvDate = 中文,日文,韩文,西班牙'',''文,阿拉
http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx
很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。
例如:
$csvDate = "中文,日文,韩文,西班牙'',''文,阿拉伯文";
$srcDir = ''/workspace/CSVList'';
$srcFile = $srcDir.date("Ymd").".csv";
if(!is_dir($srcDir)){
$fh = fopen($srcFile,''wb'');
fwrite($fh,$csvDate);
fclose($fh);
}
我们想要得CSV文件是这样的格式
中文 | 日文 | 韩文 | 西班牙'',''文 | 阿拉伯文 |
但是由于,西班牙文中有单引号和逗号
实际上在Excel中是这样的
中文 | 日文 | 韩文 | 西班牙'' | 文 | 阿拉伯文 |
解决方法一般来说就是使用转义符来进行赋值,不过如果遇到海量数据的情况下,这样的办法是不可取的。
下面推荐使用array_push和fputcsv相结合的方法来解决该问题。
这里通过程序来说明:
$srcDir = ''/workspace/UnLockList/'';
( !is_dir($srcDir) ) && (mkdir($srcDir, 0777) && chmod($srcDir,0777)) ;
$srcFile = $srcDir . date("Ymd") . ''.csv'';
$rs0 = GetCSVData($PRDBConn); //UnLockTN_Request返回的是二维数组
$fh = fopen($srcFile, ''wb'');
if(count($rs0)){
fputcsv($fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
foreach($rs0 as $line0 ){
fputcsv($fh,$line0);
}
}
fputcsv($fh,array());
fclose($fh);
chmod($srcFile,0666);
function GetCSVData ($PRDBConn){
$RETURN_ARRAY = array();
//数据库连接
.....
.....
$RS01 = 记录集;
foreach ($RS01 AS $ROW01){
$line = array();
array_push($line,$ROW01["ID"]);
array_push($line,$ROW01["NAME"]);
array_push($line,$ROW01["NO"]);
.......
array_push($RETURN_ARRAY,$line);
}
return $RETURN_ARRAY;
}
立即学习“PHP免费学习笔记(深入)”;
如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。
CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
一.csv文件的创建
(1)新建一个文本文档:
打开新建文本文档,进行编辑。
注意:关键字与关键字之间用英文半角逗号隔开。第一行为引用字段,第二行为对应值。例如:
(2)生成csv文件
将文本文档重命名更改文件扩展名,将“.txt”改为“.csv”
重命名重新打开后就是一个CSV文件格式。例如:
二.数据的表示和读写
csv文件的每一行都是一维数据,可以使用python中的列表类型表示,整个csv文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。
注:打开CSV文件的路径可以是绝对路径也可以是相对路径,可根据个人习惯来编写。
(1)导入csv格式数据到列表:
1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[] #定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4 line=line.replace("\n","")
5 ls.append(line.split(","))
6 print(ls)
7 fo.close()#关闭文件
运行结果:
[[''城市'', ''环比'', ''同比'', ''定基''], [''北京'', ''101.5'', ''120.7'', ''121.4''], [''上海'', ''101.2'', ''127.3'', ''127.8''], [''广州'', ''101.3'', ''119.4'', ''120.0''], [''深圳'', ''102.0'', ''140.9'', ''145.5''], [''沈阳'', ''100.1'', ''101.4'', ''101.6''], ['''', '''', '''', '''']]
(2)逐行处理CSV格式数据:
1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[]#定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4 line=line.replace("\n","")
5 ls=line.split(",")
6 lns=""
7 for s in ls:
8 lns+="{}\t".format(s)
9 print(lns)
10 fo.close()
运行结果:
城市 环比 同比 定基
北京 101.5 120.7 121.4
上海 101.2 127.3 127.8
广州 101.3 119.4 120.0
深圳 102.0 140.9 145.5
沈阳 100.1 101.4 101.6
(3)将一维数据写入CSV文件:
1 fo=open("city.csv","w")
2 ls=[''湖北'',''101.2'',''120.7'',''121.4'']
3 fo.write(",".join(ls)+"\n")
4 fo.close()
运行结果;
city.csv文件原有数据:
运行之后的数据:
(4)将二维数据写入CSV文件:
1 fr=open("city1.csv","r")
2 fw=open("city1out.csv","w")
3 ls=[]
4 for line in fr:#将CSV文件当中的二维数据读到列表当中去
5 line=line.replace("\n","")
6 ls.append(line.split(","))
7 for i in range(len(ls)):#遍历列表变量计算百分数
8 for j in range(len(ls[i])):
9 if ls[i][j].replace(".","").isnumeric():
10 ls[i][j]="{:.2}%".format(float(ls[i][j])/100)
11 for row in ls:#将列表变量中的两位数据写入CSV文件当中去
12 print(row)
13 fw.write(",".join(row)+"\n")
14 fr.close()
15 fw.close()
运行结果:
city1文件数据与前两个例子的city文件的内容相同,city1out.csv文件为新建立的一个CSV文件。
city1out.csv文件数据:
javascript – 无法从节点中的csv文件流中读取重音字符
我当前使用fast-csv进行的过程是通过读取流引入一个块进行处理(以一行形式出现),暂停读取流,处理数据,将数据传输到写入流然后恢复读取使用回调流. Fast-csv目前根据来自读取流的数据格式知道在哪里分离块.
整个过程如下:
var stream = fs.createReadStream(inputFileName); function csvPull(source) { csvWrite = csv.createWriteStream({ headers: true }); writableStream = fs.createWriteStream(outputFileName); csvStream = csv() .on("data",function (data) { csvStream.pause(); processRow(data,function () { csvStream.resume(); }); }) .on("end",function () { console.log('END OF CSV FILE'); }); csvWrite.pipe(writableStream); source.pipe(csvStream); } csvPull(stream);
我目前遇到的问题是我注意到由于某种原因,当我的javascript编译时,它本身并不识别非ASCII字符,因此我不得不使用npm iconv-lite来编码数据流,因为它来到可用的东西.然而,这提出了一个更大的问题,因为fast-csv将不再知道由于现在编码的数据而在哪里拆分块(行).由于我将使用的CSV的大小,这是一个问题;将整个CSV加载到缓冲区然后解码将不是一个选项.
如果没有在我的代码中编写自己的CSV解析器,我是否可以解决这个问题?
解决方法
var stream = fs.createReadStream(inputFileName,{ encoding: 'binary' });
Java从.CSV文件中读取数据和写入(转)
.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项。
import java.io.BufferedReader;
import java.io.FileReader;
public class TestRead {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("a.csv"));//换成你的文件名
reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
String line = null;
while((line=reader.readLine())!=null){
String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
String last = item[item.length-1];//这就是你要的数据了
//int value = Integer.parseInt(last);//如果是数值,可以转化为数值
System.out.println(last);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
写入数据则注意数据逗号分隔的格式,以文件写入的方式即可。
package com.mark.csv;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
public class WriteCSV {
public static void main(String[] args) {
try {
File csv = new File("F:/writers.csv"); // CSV数据文件
BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true)); // 附加
// 添加新的数据行
bw.write(""李四"" + "," + ""1988"" + "," + ""1992"");
bw.newLine();
bw.close();
} catch (FileNotFoundException e) {
// File对象的创建过程中的异常捕获
e.printStackTrace();
} catch (IOException e) {
// BufferedWriter在关闭对象捕捉异常
e.printStackTrace();
}
}
}
转自:https://www.cnblogs.com/leihupqrst/p/3508410.html
关于从php [copy]中的csv文件中读取大数据和php导出csv大数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、javascript – 无法从节点中的csv文件流中读取重音字符、Java从.CSV文件中读取数据和写入(转)等相关内容,可以在本站寻找。
本文标签: