• Как экспортировать базу JSON в MYSQL?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    По опыту для таких объёмов самый быстрый вариант будет импорт данных из CSV-файла
    dev.mysql.com/doc/refman/5.0/en/load-data.html

    Примерный синтаксис SQL-запроса. Меняете под себя.
    LOAD DATA LOCAL INFILE '{$csv_file}'
    INTO TABLE `{$table_tmp}`
    FIELDS TERMINATED BY ','
    ENCLOSED BY '\"'
    LINES TERMINATED BY '\\n'
    IGNORE 1 ROWS;


    Вам нужно лишь написать скрипт который преобразовывает json документ в csv файл
    И затем импортите этот CSV через запрос приведённый выше.
    Порядок колонок в csv-файле должен соответствовать порядку колонок в таблице в БД.
    Ответ написан
    Комментировать
  • Как экспортировать базу JSON в MYSQL?

    erge
    @erge
    Примус починяю
    1. не экспорт, а импорт
    2. гуглите (яндексите) import json to mysql (есть море информации)
    3. если импортировать записи как в примере в простую таблицу в новую БД, то проще и быстрее как уже говорили выше - загружать напрямую в базу из CSV файла, а json конвертнуть в CSV при помощи sed например (одной строчкой)
    Ответ написан
    Комментировать
  • Как сделать древовидный список в Yii2?

    @LAV45
    class Menu extends ActiveRecord
    {
    // ...
        public static function getList()
        {
            $data = static::find()
                ->select(['id', 'parent_id', 'title'])
                ->orderBy('parent_id ASC')
                ->asArray()
                ->all();
    
            $sort = new SortList([
                    'data' => $data,
                    'prefix' => '------',
            ]);
            $sortList = ArrayHelper::map($sort->getList(), 'id', 'title');
            return $sortList;
        }
    }
    
    class SortList extends Object
    {
        public $data;
    
        public $prefix = '   ';
    
        protected function getPath($category_id, $prefix = false)
        {
            foreach ($this->data as $item) {
                if ($category_id == $item['id']) {
                    $prefix = $prefix ? $this->prefix . $prefix : $item['title'];
                    if ($item['parent_id']) {
                        return $this->getPath($item['parent_id'], $prefix);
                    } else {
                        return $prefix;
                    }
                }
            }
            return '';
        }
    
        public function getList($parent_id = 0)
        {
            $data = [];
    
            foreach ($this->data as $item) {
                if ($parent_id == $item['parent_id']) {
                    $data[] = [
                        'id' => $item['id'],
                        'title' => $this->getPath($item['id'])
                    ];
                    $data = array_merge($data, $this->getList($item['id']));
                }
            }
    
            return $data;
        }
    }
    Ответ написан
    Комментировать