1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

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

Тема в разделе 'PHP', создана пользователем QuZ, 17 янв 2012.

  1. есть такая штука как csv2mysql (http://projects.comu.edu.tr/csv2mysql/)
    мне, конечно, пришлось его немного допиливать (проблемы с кодировкой), но со своей задачей он справился.
  2. стандартная функция пыхпыха 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 товаров одним прайсом не грузил))