Sql server 如何在将csv文件上载到数据库时防止重复或重复
我试图用cake php将我的CSV文件上传到数据库,我面临一个问题-如果我上传两次文件,数据也会插入两次。如何防止重复数据上传到数据库?控制器应该增加什么功能?请帮忙, 谢谢Sql server 如何在将csv文件上载到数据库时防止重复或重复,sql-server,cakephp,csv,Sql Server,Cakephp,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);