搜索csv列并插入mysql

时间:2013-10-09 18:33:02

标签: php mysql sql csv

我正在开发一个cron作业,读取一个配置文件,其中包含一些json格式的配置,而且我还有一个csv文件,我必须将数据插入到mysql tanble中 我已经完成了第一部分,即读取配置文件和读取csv文件 现在的问题是我必须在csv中搜索配置文件中的mysql列,然后如果在csv中找到匹配列,则必须将该列中的值插入到mysql表中。
我坚持这部分,需要一些帮助来完成这个。
这是示例配置文件,我必须在csv中搜索源,并且必须将它放入csv的d​​etination列。

"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"
            }
        ]

1 个答案:

答案 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++;
}
相关问题