Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在将csv文件上载到数据库时防止重复或重复_Sql Server_Cakephp_Csv - Fatal编程技术网

Sql server 如何在将csv文件上载到数据库时防止重复或重复

Sql server 如何在将csv文件上载到数据库时防止重复或重复,sql-server,cakephp,csv,Sql Server,Cakephp,Csv,我试图用cake php将我的CSV文件上传到数据库,我面临一个问题-如果我上传两次文件,数据也会插入两次。如何防止重复数据上传到数据库?控制器应该增加什么功能?请帮忙, 谢谢 您想要的代码不属于控制器,所有数据处理代码都会进入模型 解决问题的方法很简单:在保存之前,验证是否存在记录的副本。您只需要对所有字段及其值进行查找(“计数”)。如果结果大于零,则会得到一个重复结果并跳过保存。简单 遵循一些编码标准,你的代码读起来很糟糕 在任何人都能提供有用的帮助之前,你需要提供更多的信息,比如你的代码。

我试图用cake php将我的CSV文件上传到数据库,我面临一个问题-如果我上传两次文件,数据也会插入两次。如何防止重复数据上传到数据库?控制器应该增加什么功能?请帮忙, 谢谢

  • 您想要的代码不属于控制器,所有数据处理代码都会进入模型
  • 解决问题的方法很简单:在保存之前,验证是否存在记录的副本。您只需要对所有字段及其值进行查找(“计数”)。如果结果大于零,则会得到一个重复结果并跳过保存。简单
  • 遵循一些编码标准,你的代码读起来很糟糕

  • 在任何人都能提供有用的帮助之前,你需要提供更多的信息,比如你的代码。谢谢你的评论。很抱歉,我是php的新手。RAS_代码、日期、时间、SOF是我的数据库表中的字段,我希望这四个字段的组合能够确定上传期间的数据输入是否唯一。上面我添加了find('count')代码,不确定错误在哪里。
    public function upload()
    {
        if($this->request->is('post'))
        {
            $up_file = $this->request->data['Upload']['CSV_File'];
            if($up_file['error'] == UPLOAD_ERR_OK)
            { 
                move_uploaded_file($up_file['tmp_name'], ROOT . DS . 'uploads' . DS . $up_file['name']);
    
        $file = fopen(ROOT . DS . 'uploads' . DS . $up_file['name'], 'r');
        $fields = fgetcsv($file);
                unset($this->request->data['Upload']['CSV_File']);
                while(! feof($file))
                {
                    $curDataRow = fgetcsv($file);
                    $i = 0;
                    foreach($fields as $key => $field_name)
                    {
                        if(strtolower($field_name) == 'date')
                        { 
                            $date = $curDataRow[$i];
    
    
    
                        $this->request->data['Upload'][$field_name] = date('Y-m-d', strtotime($curDataRow[$i]));
    
    
                        }
                        else if (strtolower($field_name) == 'time')
                        { $this->request->data['Upload'][$field_name] = date('H:i:s', strtotime($curDataRow[$i])); }
                        else
                        { $this->request->data['Upload'][$field_name] = $curDataRow[$i];}
    
                        $i++;
                    }
                        $count = $this->Upload->find('count', array(         
                        'conditions' => array(
                        'RAS_Code' => $this->data['Upload']['RAS_Code'],
                        'Date' => $this->data['Upload']['Date'],
                        'Time' => $this->data['Upload']['Time'],
                        'SOF' => $this->data['Upload']['SOF'], )));
                        if ($count>0)
                        unset($this->request->data['Upload']['CSV_File']);
    
    
    $this->Upload->save($this->request->data, array('validate' => true));               }
    
                fclose($file);