使用特定日期将数据库从一个复制到另一个的最佳方法是什么?
这是流程,用户对我的程序(PHP 语言)执行一些操作,然后获取一些文件。然后他需要在其他程序上上传该文件,以便复制数据库。
将被复制的只是没有结构的数据,因为结构总是相同的。
这里的例子是数据的结构
源表调用old
id | date | value_1 | value_2 | value 3
1 | 2012-06-02 | some_data | some_data | some_data
2 | 2012-06-03 | some_data | some_data | some_data
3 | 2012-06-03 | some_data | some_data | some_data
然后用户只想下载数据以将2012-06-03
其移动到名为 的新表中new
。遗嘱中的结果new
是:
id | date | value_1 | value_2 | value 3
2 | 2012-06-03 | some_data | some_data | some_data
3 | 2012-06-03 | some_data | some_data | some_data
笔记:
[*]The program will be need smart enough to understand, if the `id` already in the `new` database then do `update` if not do `insert`.
[*]The table is located on different database. e.g: `db_source.old` copied to `db_target.new`
这样做的最佳逻辑是什么?或者也许已经有一些类来处理这种任务?
请理解这不是大学任务,而是我想添加到我的程序中的真实项目实施。我在这里问不是get the code
问题。请给我一些线索,然后我会很乐意研究它
已经制作了一些输出数据的脚本。
一些执行收集数据脚本的片段
/**
* Get all database data and output it in array format
* @return array
*/
function output(){
$return = array();
foreach($this->getAllTableName() as $table_name){
$this->load->model($table_name.'_model');
$class_name = $table_name.'_model';
$model = new $class_name;
$return[$table_name] = array();
$this->db->where('created >=', $this->date_start);
$this->db->where('created <=', $this->date_end);
foreach((array)$model->get() as $object){
$return[$table_name][$object->id] = $this->wrap_value($object);
}
}
return $return;
}
输出:
但是还是混淆了SQL文件会被写入来了解哪些数据需要update
和insert