2012-12-14 31 views
3

我过去几天面临这个问题,现在因为必须这样做而感到沮丧。如何使用数据库表标题更新csv列名

我需要使用数据库表头更新我的CSV文件列名称。我的数据库表字段与CSV文件不同。现在的问题是,首先我想用数据库表头来更新CSV文件的列名,然后用数据库中的字段映射导入它的数据。

请帮我我不知道我该如何解决这个问题。

这是我的PHP代码:

$file  = $_POST['fileName']; 
$filename = "../files/" . $file; 
$list  = $_POST['str']; 
$array_imp = implode(',', $list); 
$array_exp = explode(',', $array_imp); 
$fp  = fopen("../files/" . $file, "w"); 
$num  = count($fp); 

for ($c = 0; $c < $num; $c++) { 
    if ($fp[c] !== '') { 
     fputcsv($fp, $array_exp); 
    } 
} 

fclose($fp); 


require_once("../csv/DataSource.php"); 
$path = "../files/test_mysql.csv"; 
$dbtable = $ext[0]; 

$csv = new File_CSV_DataSource; 
     $csv->load($path); 
     $csvData = $csv->connect(); 
     $res=''; 
     foreach($csvData as $key) 
     { print_r($key[1]); 
      $myKey =''; 
      $myVal=''; 
      foreach($key as $k=>$v) 
      { 
       $myKey .=$k.','; 
       $myVal .="'".$v."',"; 

      } 
      $myKey = substr($myKey, 0, -1); 
      $myVal = substr($myVal, 0, -1); 
      $query="insert into tablename($myKey)values($myVal)"; 
      $res= mysql_query($query); 
+1

你有什么具体的问题?这应该发生在PHP?使用手动导入?你还没有真正提出具体的可回答*问题*。 – deceze

+0

我正在使用php脚本导入csv文件,当我尝试使用数据库表头更新csv文件列名称时,问题即将到来。它从csv文件中删除完整的数据并仅插入表头。 – user1523311

+0

请帮助我,如果有人在这里 – user1523311

回答

0

如果您在管理插入表头那么你就成功了一半。 像你所需要的头一样的东西后,将数据追加这听起来对我说:

$data = $headers;

if($fp[c]!=='')
{ $data .= fputcsv($fp, $array_exp); }

注意点“”在if语句中的等号'='之前。这将在标题后添加空白$fp[c]值。

1

您已经有一个现有文件,其中第一行需要替换。

这已被中总体概述这里:

一些小的解释(和一些技巧,没有涉及的其他问题)。大多数情况下它更容易在这里两个文件进行操作:

  1. 现有的文件
  2. 暂时将用于写入到一个新文件(从复制)。

完成后,旧文件将被删除,新文件将被重命名为旧文件的名称。

您的代码不起作用,因为您已经将新的第一行写入旧的文件。当你关闭它时,这将会切断文件的其余部分。

此外,你看起来误导了一些基本的PHP功能,例如在文件句柄上使用count并不能帮助你获得行数。它会立即1.

这里是一步一步的,你需要做什么:

  1. 打开的现有文件阅读。刚刚读取它的第一行以提前文件指针(fgets
  2. 打开一个新文件写入。将新的标题写入其中(正如您已经成功完成的那样)。
  3. 将第一个文件中的所有剩余数据复制到新的第二个文件中。 PHP有一个函数,它被称为stream_copy_to_stream
  4. 关闭这两个文件。

    现在检查新的文件是你在找什么。当这一切正常时,您需要添加一些步骤:

  5. 将原始文件重命名为新名称。这可以通过rename完成。

  6. 重命名你被写入到原始文件名的文件。

如果你愿意,你可以删除你在5中重命名的文件 - 但只有当你不再需要它时。

就是这样。我希望这是有帮助的。 PHP手册包含提及和链接的所有功能的示例代码。祝你好运。如果你不明白自己的代码,请使用手册先阅读它。这减少了你可以引入错误的地方。

+0

非常感谢我曾与你叫同分解决它 – user1523311

+0

现在,我需要检查重复的值,如果有重复的值与数据库中的表匹配的CSV文件的话,我不想它。我插入只想插入不同的记录没有插入到数据库表中。我已经粘贴了上面的插入代码。 – user1523311

+0

此代码成功插入csv值,但不匹配重复值。我需要将csv文件“ID”列名称值与表字段“ID”相匹配。 – user1523311