我正在开发一个cron作业,读取一个配置文件,其中包含一些json格式的配置,而且我还有一个csv文件,我必须将数据插入到mysql tanble中
我已经完成了第一部分,即读取配置文件和读取csv文件
现在的问题是我必须在csv中搜索配置文件中的mysql列,然后如果在csv中找到匹配列,则必须将该列中的值插入到mysql表中。
我坚持这部分,需要一些帮助来完成这个。
这是示例配置文件,我必须在csv中搜索源,并且必须将它放入csv的detination列。
"matchingField": [
{
"source": "ProductLongDescription",
"detination": "Description"
},
{
"source": "ExtraTextOne",
"detination": "EventDate"
},
{
"source": "ExtraTextTwo",
"detination": "EventTime"
},
{
"source": "ExtraTextThree",
"detination": "LocationInfo"
},
{
"source": "Zupid",
"detination": "Unique_ID"
},
{
"source": "ProductName",
"detination": "Title"
},
{
"source": "ProductPrice",
"detination": "Price"
},
{
"source": "MerchantProductCategory",
"detination": "Category"
},
{
"source": "ImageMediumURL",
"detination": "ExternalImageUrl"
},
{
"source": "ProductManufacturerBrand",
"detination": "LocationName"
},
{
"source": "ZanoxProductLink",
"detination": "RedirectLink"
},
{
"source": "TermsOfContract",
"detination": "sittingType"
}
]
答案 0 :(得分:0)
自己得到解决方案:)。首先为源列和目标列创建两个数组,然后为csv标题列创建一个数组,然后在源数组中搜索标题列值,如果匹配,则创建一个包含目标列名称及其对应值的查询来自csv 。我可能不会很好地解释代码,但这解决了我的问题。
while ( ($data = fgetcsv($handle, 10000, $columnDelimiter) ) !== FALSE )
{
$number_of_fields = count($data);
if ($current_row == 1)
{
//Header line
for ($c=0; $c < $number_of_fields; $c++)
{
$header_array[$c] = $data[$c];
}
}
else
{
//Data line
$sql_str = '';
for ($c=0; $c < $number_of_fields; $c++)
{
if($key = array_search($header_array[$c],$source_arr)){
$sql_str .= $dest_arr[$key]." = '".$data[$c]."',";
}
}
$sql_str = "INSERT INTO $destinationTable SET ".trim($sql_str,',');
mysql_query($sql_str);
}
$current_row++;
}