pdoで取得したSQLをファイルに出力したいのですが、エラーにより出力できません。する質問をすることでしか得られない、回答やアドバイスがある。15分調べてもわからないことは、質問しよう!質問するただいまの回答率89.65%トップPHPに関する質問PHPJavaScriptを有効にしてくださいpdoで取得したSQLをファイルに出力したいのですが、エラーにより出力できません。~~~最初の質問はhttps://teratail.com/questions/93539です。Doctrineを使用していたのですが、あまりにもメモリを消費するのでpdoを使用し、$obj->getXX()を使用しないように修正しました。pdo検索でメモリを消費しなくなりましたが、取得件数が数百万件になり、ループする回数を減らしたいためhttps://teratail.com/questions/99914の質問をしました。一度、数百万件で処理を実行したところ、問題なく出力できました。ループでファイルに出力する処理で時間がかかりすぎるため、今回の質問をすることになりました。SQL実行$stmt->execute($sqlStr);上記のSQLの結果をファイルに出力したいのですが、エラーが発生して出力できません。エラーメッセージは以下が出力されます。上記のPHPを実行しているAPサーバーとDBサーバーが異なるため、DBサーバーの結果をAPサーバーに出力できないと思います。OUTFILE」が付与されていないときはエラーは発生しませんでした。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。15:44出力先はAPサーバーです。出力先はAPサーバーです。OUTFILE」が付与されていないときはエラーは発生しませんでした。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。15:51ファイル作成処理を追加しました。ファイルは作成され、パーミッションも777が設定されています。この状態でもエラーメッセージは変わりません。「アップロードは成功しましたが、パーミッション/タイムスタンプの設定中にエラー」が表示されます。ファイル作成処理を追加しました。ファイルは作成され、パーミッションも777が設定されています。この状態でもエラーメッセージは変わりません。「アップロードは成功しましたが、パーミッション/タイムスタンプの設定中にエラー」が表示されます。OUTFILEを使っても、出力先はDBサーバーになります。APサーバーに出力するのであれば、泥臭いやり方ですが、フェッチしながらファイルに書きだしてあげればどうでしょうか。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。OUTFILE」はリモートの情報をローカルに出力できないようですね。この質問をした理由は過去に自分が質問したhttps://teratail.com/questions/99914に理由があります。$stmt->fetch(PDO::FETCH_ASSOC)){}のようなループを使用して、最後まで出力はできました。ループ処理が完了するのに30分以上かかります。あまりにも時間がかかりすぎているため、高速化のためにループせずに出力する方法等を模索しているところです。OUTFILE」はリモートの情報をローカルに出力できないようですね。ようなループを使用して、最後まで出力はできました。ループ処理が完了するのに30分以上かかります。あまりにも時間がかかりすぎているため、高速化のためにループせずに出力する方法等を模索しているところです。16:31該当の質問はこっちですかね?https://teratail.com/questions/93539遅いという理由だと、提示した方法だと厳しいですね。OUTFILEで出力して、それをFTPなどでAPサーバーに持ってくる感じでしょうかね。遅いという理由だと、提示した方法だと厳しいですね。OUTFILEで出力して、それをFTPなどでAPサーバーに持ってくる感じでしょうかね。16:51最初の質問はhttps://teratail.com/questions/93539です。Doctrineを使用していたのですが、あまりにもメモリを消費するのでpdoを使用し、$obj->getXX()を使用しないように修正しました。pdo検索でメモリを消費しなくなりましたが、取得件数が数百万件になり、ループする回数を減らしたいためhttps://teratail.com/questions/99914の質問をしました。一度、数百万件で処理を実行したところ、問題なく出力できました。ループでファイルに出力する処理で時間がかかりすぎるため、今回の質問をすることになりました。DBサーバーに出力ファイルを作成してexec()処理でダウンロードさせるとかですかね?そうなるとDBサーバーに出力できるかどうか調べないといけません。Doctrineを使用していたのですが、あまりにもメモリを消費するのでpdoを使用し、$obj->getXX()を使用しないように修正しました。一度、数百万件で処理を実行したところ、問題なく出力できました。ループでファイルに出力する処理で時間がかかりすぎるため、今回の質問をすることになりました。なるとDBサーバーに出力できるかどうか調べないといけません。16:55過去質問の前提があるなら、その旨書いておいた方がいいと思いますよ。私のようにこの質問だけ見た人にはわからないので。-------------------------DBサーバーは出力先ディレクトリの権限次第だと思うので、その設定さえできていれば問題ないと思います。過去質問の前提があるなら、その旨書いておいた方がいいと思いますよ。私のようにこの質問だけ見た人にはわからないので。DBサーバーは出力先ディレクトリの権限次第だと思うので、その設定さえできていれば問題ないと思います。16:59コメントの内容を本文に追記しました。コメントの内容を本文に追記しました。キャンセル完了するlink0検討、実験した結果、以下のような処理になりました。1.サブテーブルの最大件数を取得する。12.「1.」で取得した件数でループしてサブテーブル部分のSQLを作成する。main3.「2.」を登録するテーブルを作成する。(カラム);4.「2.」をINSERTする。「2.」のSELECT;5.PHPのexec()でリダイレクト出力する。test/test.csv6.「3.」のテーブルを削除する。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:27約5万件を出力して試しました。今回の実装でリダイレクト出力した場合は約25分、という結果になりました。約5万件を出力して試しました。今回の実装でリダイレクト出力した場合は約25分、という結果になりました。09:33処理としては複雑ですが、最速のため、このような実装をせざるを得ない状況になりました。私としては、このような処理はメンテナンスのことを考えると実装すべきではないと思います。しようもないため、この質問は解決済みにさせていただきます。処理としては複雑ですが、最速のため、このような実装をせざるを得ない状況になりました。私としては、このような処理はメンテナンスのことを考えると実装すべきではないと思います。しようもないため、この質問は解決済みにさせていただきます。思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る閉じるトップPHPに関する質問pdoで取得したSQLをファイルに出力したいのですが、エラーにより出力できません。頂いたご意見への回答は行っておりません。