Имеется ли скрипт готовый для импорта csv в mysql

есть такая штука как csv2mysql (Для просмотра ссылки Войди или Зарегистрируйся)
мне, конечно, пришлось его немного допиливать (проблемы с кодировкой), но со своей задачей он справился.
 
стандартная функция пыхпыха fgetcsv не работает нормально с русским языком, вырезает куски слов неважно в какой кодировка, нашел когда то в сети такой прибамбас и к нему можно приделывать дальше что угодно
Код:
function fgetcsv($f, $length, $d="^", $q='') {
        $list = array();
        $st = fgets($f, $length);
        if ($st === false || $st === null) return $st;
        while ($st !== "" && $st !== false) {
            if ($st[0] !== $q) {
                # Non-quoted.
                list ($field) = explode($d, $st, 2);
                $st = substr($st, strlen($field)+strlen($d));
            } else {
                # Quoted field.
                $st = substr($st, 1);
                $field = "";
                while (1) {
                    # Find until finishing quote (EXCLUDING) or eol (including)
                    preg_match("/^((?:[^$q]+|$q$q)*)/sx", $st, $p);
                    $part = $p[1];
                    $partlen = strlen($part);
                    $st = substr($st, strlen($p[0]));
                    $field .= str_replace($q.$q, $q, $part);
                    if (strlen($st) && $st[0] === $q) {
                        # Found finishing quote.
                        list ($dummy) = explode($d, $st, 2);
                        $st = substr($st, strlen($dummy)+strlen($d));
                        break;
                    } else {
                        # No finishing quote - newline.
                        $st = fgets($f, $length);
                    }
                }
 
            }
            $list[] = $field;
        }
        return $list;
    }
    public function import($fn) {


а дальше стандартными методами как по учебнику

Код:
if (($handle = fopen($fn, "r")) !== FALSE) {
            while (($data = $this->rgetcsv($handle, 1000, "^")) !== FALSE) {
                $num = count($data);
               
               
                for ($c=0; $c < $num; $c++) {
                    $data[$c]=str_replace("\"","",$data[$c]);
                    $item[$i][$c]=iconv ("Windows-1251" , "UTF-8" , $data[$c] );
                 
                }
               
                $i++;
            }
           
            fclose($handle);
           
            }


на выходе имеешь массив в утф 8 если ненужно закомментируй iconv и записывай его INSERT ом спкойно куда тебе надо в цикле и все... мне достаточно и этого 1000000 товаров одним прайсом не грузил))
 
Назад
Сверху