php+mysql会員制サイトを運営しているのですが
レコード数が50000を越えたあたりから容量がでかすぎるためか
エクスポートができなくなってしまいました
zipで圧縮を選んでもエクスポートすることができません。
現在レコード数は100000なのですが、複数に分割してエクスポートすることでユーザーの登録情報をバックアップしています。

このようにレコード数が増えすぎてしまった場合でも一度にエクスポートするにはどうしたらよいでしょうか?
ご教授頂けると幸いです。
よろしくお願い致します。

A 回答 (1件)

phpMyAdminではなく,MySQLから直接コマンドライン出力してみてはどうでしょうか?


コマンド操作ならばSELECT句を利用した出力も可能なので,LIMIT掛ければ小分けにすれば出力も可能とは思いますが……そもそも容量で出力出来なくなった,と言う事はメモリ不足か何かの問題なのでしょうか?
MySQLそのものに問題があるかどうかは確認しましたか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QphpMyadminでの大容量データのエクスポートインポート

現在、サーバーを移転するために
データベースに入っているデータを移転させる作業をしているのですが、
データのレコード数が膨大で、phpmyadminでインポート、エクスポートしても
タイムアウト?したり、エラーが出てしまったりしてうまく移行できません。
少しづつインポートエクスポートすることも考えましたが、
もし一度にアップする方法があるならと、質問させて頂きました。
アドバイスお願い致します。

Aベストアンサー

PHPにもhttpサーバーのPOSTにも制限がかかっています。
いわゆるBOM攻撃への布石なので、この制限を外すことは望ましくありません。
また、PHPにはタイムアウトもあります。INSERT処理がおおくなれば
処理半ばでおわっちゃいますね

大容量のデータのエクスポート・インポートであれば、エクスポート側で
SQL形式におとし、それをFTPでゲットする
インポートも同様にFTPでプットしておいて、mysqlコマンドで入れ込む
のが妥当だと思います

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Q独自ドメインからどこのレンタルサーバーを使用してるか調べる方法

独自ドメイン(www.好きな名前.com等)からどこのレンタルサーバーを使用してるか調べる方法を教えて下さい。
またレンタルサーバー専用会社なのか大手プロバイダのレンタルサービスを使用してるかを調べる方法をできれば具体的に教えて下さい。

Aベストアンサー

.comや.orgなどならば http://www.whois.sc/
でドメイン名を入れて検索すると、
その結果表示の中の IP location という項目に
会社名がでます。

.jpならば コマンドプロンプトで"ping サーバ名"で
IPアドレスを取得、次に http://www.nic.ad.jp/
下部左の部分にそのIPアドレスを入れて検索すると
会社名がでます。

でドメインを入れて

QphpMyAdmin にログインできません

phpMyAdmin にログインできません。
ユーザー名 : root
パスワード : password
でログインしようとすると、
#1045 MySQL サーバにログインできません
とでます。

MySql 5.6
phpMyAdmin 4.4.14.1-all-languages

よろしくお願いします。

Aベストアンサー

config.inc.phpの
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] =  <--- を確認。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

QParse error: syntax error, unexpected T_STRING in・・・118と出るのですが

Parse error: syntax error, unexpected T_STRING in 。。。 on line 118
とでるのですが対処はどうすればよろしいでしょうか?

Aベストアンサー

118行目をみてみてください。
ダブルクォーテーションのなかでダブルクォーテーションを使ったり
してませんか?
基本的な文法ミスなので、自己解決できないと今後きびしいですよ。

Q差分の月数を算出する方法

午前中に差分の日数を算出する方法は教えて頂けたのですが、
月数を算出する方法が分からなく困っています。

2007/08/27 13:00
2007/07/31 00:00

この時、差分は1ヶ月としたいです。
日数は考慮せず、あくまで年月のみで算出を行いたいです。
但し、1ヶ月はその年月の末日と同値です。

今やってる処理はこんな感じです。
$now = mktime(0, 0, 0, $now["tm_mon"], 1, $now["tm_year"]);
$paradate = mktime(0, 0, 0, $paradate["tm_mon"], 1, $paradate["tm_year"]);
$diff = strtotime($now) - strtotime($paradate);

ここまではいいと思うのですが、次に以下のような処理を行っています。
(途中まで書いて、だめじゃんと思った状態)
$select = $diff / (60 * 60 * 24);

ここで何をやりたいかと言うと、何ヶ月の差分があったかを求めたいのです。
しかし、タイムスタンプの差分を求めた日付(ここでは$paradate)が何月で、末日が
何日だからその分を差し引く、その次の月の末日が何日だからその分を
差し引く~・・・
としていかないと正しい差分が求められないと思うのです。
(28, 29, 30, 31の末日の差がある為)

どうすれば簡単に処理できるのでしょうか?
どなたかご教示下さい。
足りない情報がありましたら随時補足致します。

午前中に差分の日数を算出する方法は教えて頂けたのですが、
月数を算出する方法が分からなく困っています。

2007/08/27 13:00
2007/07/31 00:00

この時、差分は1ヶ月としたいです。
日数は考慮せず、あくまで年月のみで算出を行いたいです。
但し、1ヶ月はその年月の末日と同値です。

今やってる処理はこんな感じです。
$now = mktime(0, 0, 0, $now["tm_mon"], 1, $now["tm_year"]);
$paradate = mktime(0, 0, 0, $paradate["tm_mon"], 1, $paradate["tm_year"]);
$diff = strtotime($now) - st...続きを読む

Aベストアンサー

なるほど・・・
月の差だけ考えればよいなら単純に

<?PHP

$str1="2007/08/27 13:00";
$str2="2007/07/31 00:00";

$date1=strtotime($str1);
$date2=strtotime($str2);
$month1=date("Y",$date1)*12+date("m",$date1);
$month2=date("Y",$date2)*12+date("m",$date2);

$diff = $month1 - $month2;
print $diff;

?>

もちろん、7/31~8/1でも1ヶ月になりますけどね。

Q#1062 - Duplicate entry '1' for key 'PRIMARY'

利用していた幾つかのテーブルの中身だけを消去してしまいました。

ダンプデータを取ってあったので、復元させようとしたら、
下記エラーとなりました。何回か試している内、最終的にはうまくいったのですが、下記エラーは、どういう意味だったのでしょうか。
#1062 - Duplicate entry '1' for key 'PRIMARY'

<補足>
・テーブル自体は消失していなかったので、データが消失したテーブル部分のみ、phpMyAdminのSQL欄にSQL文を書いて、テーブルごとにINSERT 文を実行した。

<知りたいこと>
・エラーの意味

Aベストアンサー

プライマリーキーに対して"1"というデータがすでに存在していて
競合してますってことですね

プライマリーキーはユニークを確保するための検索キーなので
同一値はもてません


人気Q&Aランキング

おすすめ情報