GVKun编程网logo

从php [copy]中的csv文件中读取大数据(php导出csv大数据)

33

在本文中,我们将为您详细介绍从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 [copy]中的csv文件中读取大数据(php导出csv大数据)

参见英文答案 > file_get_contents => PHP Fatal error: Allowed memory exhausted                                    3个
我正在读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"; 
   }
}

注意:我只想列出我表中不存在的记录.

请建议我解决这个问题……

解决方法

处理大文件的一种很好的方法是: https://stackoverflow.com/a/5249971/797620

此方法在http://www.cuddlycactus.com/knownpasswords/(页面已被删除)中使用,仅在几毫秒内搜索1.7亿个密码.

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常

(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相结合的方法来解决该问题。

这里通过程序来说明:

(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常$srcDir = ''/workspace/UnLockList/'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
!is_dir($srcDir) ) && (mkdir($srcDir, 0777&& chmod($srcDir,0777)) ;
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$srcFile = $srcDir . date("Ymd". ''.csv'';
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$rs0 = GetCSVData($PRDBConn);  //UnLockTN_Request返回的是二维数组
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
$fh = fopen($srcFile, ''wb'');
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
if(count($rs0)){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        fputcsv(
$fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        
foreach($rs0 as $line0 ){
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常                fputcsv(
$fh,$line0);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常        }
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常}
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常fputcsv(
$fh,array());
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
fclose($fh);
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
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文件格式异常

立即学习“PHP免费学习笔记(深入)”;


如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。

 

 

CSV文件数据如何读取、导入、导出到新的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文件流中读取重音字符

javascript – 无法从节点中的csv文件流中读取重音字符

开始吧.我目前正在使用npm fast-csv,这是一个非常简单明了的很好的CSV读写器.我试图做的是将它与iconv一起使用来处理“重音”字符和非ASCII字符,并将它们转换为ASCII等效字符或根据字符删除它们.

我当前使用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解析器,我是否可以解决这个问题?

解决方法

尝试使用二进制文件读取文件以获取编码选项.我不得不阅读一些带有一些重音字符的csv,并且它工作得很好.

var stream = fs.createReadStream(inputFileName,{ encoding: 'binary' });

Java从.CSV文件中读取数据和写入(转)

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文件中读取数据和写入(转)等相关内容,可以在本站寻找。

本文标签: