サンプルコードを頂けないでしょうか。
---------------------------------------
テーブルAからデータを全件(10000件程度)抽出し、
100件ずつテーブルBに移し変える。移し変えは、
100件ずつinsert&commitする形で行う。
なお、テーブルA、Bに存在する項目の名称(全角)は
下記2つです。
種類
金額
-----------------------------------------
以上、よろしくお願いします。
こんな感じです。
冒頭の日本語コメントのところにパラメータを入れてください
MySQLおよびPHPの文字エンコードは正しく設定されているとします
SQLインジェクションのチェックはしていません
<? $host = DBホスト名 $user = ログインユーザー名 $psw = ログインパスワード $dnmame = データベース名 $tblA = テーブルAの名前 $tblB = テーブルBの名前 $ofst = 100; //copy record numbers each transaction //connect DB $con = @mysql_connect($host, $user, $psw) or die("cannot connect {$host}"); @mysql_select_db($dbname, $con) or die('cannot select ' . $dbname); //count records $sql = "SELECT * FROM {$tblA} WHERE 1;"; $res = @mysql_query($sql, $con) ord die("cannot execute query: {$sql}"); $nums = mysql_num_rows($res); //start transaction $sql = "begin"; @mysql_query($sql, $con) ord die("cannot execute query: {$sql}"); for ($start = 1; $i <= $nums; $i += ofst) { //select records <= TABLE A $sql = "SELECT * FROM {$tblA} WHERE 1 LIMIT {$start},{$start + ofst};"; $res = @mysql_query($sql, $con) ord die("cannot execute query: {$sql}"); insert records => TABLE B while ($row = mysql_fetch_array($res)) { $sql = "INSERT INTO {$tblB} (`種類` ,`金額`) VALUES ({$row['種類']},{$row['金額']});"; @mysql_query($sql, $con) ord die("cannot execute query: {$sql}"); } //commit $sql = "commit"; @mysql_query($sql, $con) ord die("cannot execute query: {$sql}"); mysql_close($con); ?>
コメント(1件)
参考になりました。