2011-02-01 9 views
0

私はどのように私は同じデータベース内の別のテーブルにcakephpを使用して1つのmysqlテーブルをコピーすることができます私は可能な場合は、例のクエリを教えてください。cakephpのmysqlテーブルを別のテーブルにコピーするには?

+0

mysqlコマンドラインクライアントを使用する方法を学ぶ必要があります。クエリを直接実行してください。クエリを実行するプログラムがMySQLに付属している場合は、プログラムを作成する必要はありません。 http://dev.mysql.com/doc/refman/5.1/en/insert-select.html –

答えて

2

をMySQLへ接続できるように設定し、関連する接続ソーステーブルが新しいターゲットレコードを記録して作成します。

$source = $this->Source->find('all'); 
foreach($source as $sRec) 
{ 
    $this->Target->create(); 
    $targetData = array(); 
    $target['Target']['field1'] = $sRec['Source']['field1']; 
    $target['Target']['field2'] = $sRec['Source']['field2']; 
    //etc 
    $this->Target->save($targetData); 
} 

バグがある場合は謝ってしまいました。

行選択条件を示すために編集されます。

$toCopy = array(1,32,71,72,73); 
foreach($toCopy as $anId) 
{ 
    $sRec = $this->Source->read(null,$anId); 
    $this->Target->create(); 
    $targetData = array(); 
    $target['Target']['field1'] = $sRec['Source']['field1']; 
    $target['Target']['field2'] = $sRec['Source']['field2']; 
    //etc 
    $this->Target->save($targetData); 
} 
+0

私は指定されたIDに従った行だけをコピーできます –

+0

はい。あなたが汚れていて幸せで、速度が問題ではないなら(テーブルがBIGの場合のみ適用されます)、条件を追加してください - 私の編集を見てください。 – Leo

+0

$ target ['Target'] ['field1']などはありません - $ targetData ['Target'] ['field1'] –

4
create table new_table like your_table; 
insert into new_table select * from your_table; 

上記以上のインデックスを維持しませんNEW_TABLE

create table new_table select * from your_table; 

のインデックスを維持します。
cakephpのとは何の関係はありませんが、あなただけの正しいSQL構文を必要とする、
プラスPHPは、それが迅速かつ汚い一度コピーだ場合、私はオーバーちょうどループと思い

+0

CakePHPの中から実行する必要がある場合、これは$ this-> MyModel-> query( 'いくつかのSQL '); – Leo

+0

あなたが言ったように、cakephpとは関係ありません。次にこのクエリを書くべきですか? –

+0

** 1. **上記のスクリプトを実行するには、mysqlクライアントプログラムを使用してください。 ** 2。**上記のsqlを実行するためにPHPスクリプト(cakephpフレームワークを使う必要はありません)を書いてください。 – ajreal

関連する問題