Esempio n. 1
0
 public static function getColumnId($name)
 {
     $name = trim($name);
     if (is_null(self::$_column_groups)) {
         self::$_column_groups = array();
         foreach (ColumnGroup::search(1) as $group) {
             self::$_column_groups[$group->name] = $group->id;
         }
     }
     if (!array_key_exists($name, self::$_column_groups)) {
         self::$_column_groups[$name] = ColumnGroup::insert(array('name' => $name))->id;
     }
     return self::$_column_groups[$name];
 }
Esempio n. 2
0
 public function getData()
 {
     if (is_null(self::$_columns)) {
         self::$_columns = array();
         foreach (ColumnGroup::search(1) as $columngroup) {
             self::$_columns[$columngroup->id] = $columngroup->name;
         }
     }
     $data = new StdClass();
     foreach (UnitData::search(array('id' => $this->id)) as $unitdata) {
         $data->{self::$_columns[$unitdata->column_id]} = json_decode($unitdata->value);
     }
     $data = Unit::walkObject($data);
     return $data;
 }
Esempio n. 3
0
 public function dump()
 {
     $columns = array();
     foreach (ColumnGroup::search(1) as $columngroup) {
         $columns[$columngroup->id] = $columngroup->name;
     }
     $delta = 10000000;
     for ($i = 0; $i * $delta < 99999999; $i++) {
         $start = $i * $delta;
         $end = $start + $delta - 1;
         $tmpname1 = tempnam('', '');
         $tmpname2 = tempnam('', '');
         $file_name1 = 'files/' . str_pad($i * $delta, 8, '0', STR_PAD_LEFT) . '.json.gz';
         $file_name2 = 'files/bussiness-' . str_pad($i * $delta, 8, '0', STR_PAD_LEFT) . '.json.gz';
         $fp[1] = $fp[3] = gzopen($tmpname1, 'w');
         $fp[2] = gzopen($tmpname2, 'w');
         $unit_id = null;
         $unit = new StdClass();
         foreach (UnitData::search("`id` >= {$start} AND `id` <= {$end}")->order("`id`, `column_id`")->volumemode(10000) as $unit_data) {
             if (!is_null($unit_id) and $unit_data->id != $unit_id) {
                 fwrite($fp[$this->getType($unit_id)], str_pad($unit_id, 8, '0', STR_PAD_LEFT) . ',' . json_encode($unit, JSON_UNESCAPED_UNICODE) . "\n");
                 $unit = new StdClass();
             }
             $unit_id = $unit_data->id;
             $unit->{$columns[$unit_data->column_id]} = json_decode($unit_data->value);
         }
         if (!is_null($unit_id)) {
             fwrite($fp[$this->getType($unit_id)], str_pad($unit_id, 8, '0', STR_PAD_LEFT) . ',' . json_encode($unit, JSON_UNESCAPED_UNICODE) . "\n");
         }
         fclose($fp[1]);
         fclose($fp[2]);
         DropboxLib::putFile($tmpname1, $file_name1);
         DropboxLib::putFile($tmpname2, $file_name2);
         unlink($tmpname1);
         unlink($tmpname2);
     }
 }
Esempio n. 4
0
<?php

/**
 * 從之前的 sqlite 備份備到 mysql 的 script
 */
include __DIR__ . '/../init.inc.php';
Pix_Table::$_save_memory = true;
Pix_Table::addStaticResultSetHelper('Pix_Array_Volume');
$file = $_SERVER['argv'][1];
if (!$file or !file_exists($file)) {
    die('need file');
}
// 先把所有 column 抓出來,之後就不需要再抓了
$columns = array();
foreach (ColumnGroup::search(1) as $columngroup) {
    $columns[$columngroup->name] = $columngroup->id;
}
// 匯入檔的格式
class ImportData extends Pix_Table
{
    public function init()
    {
        $this->_name = 'data';
        $this->_primary = 'no';
        $this->_columns['no'] = array('type' => 'varchar');
        $this->_columns['data'] = array('type' => 'text');
    }
}
$db = new Pix_Table_Db_Adapter_Sqlite($file);
ImportData::setDb($db);
$wdb = UnitData::getDb();