0

mysql サーバーから 2 つのテーブルを Web サーバー上の csv ファイルにエクスポートしたいと考えています。

mysql と Web サーバーの両方が同じマシンで実行されており、Web に面していません。これは、私が定期的に実行するタスクを自動化するための小さな Web アプリケーションにすぎないため、セキュリティは問題になりません。

私が試した方法は、絶対に理想的ですが、うまくいきませんでした:

$exportArticle = 'SELECT *
INTO OUTFILE "article_line.csv"
FIELDS TERMINATED BY ","
ENCLOSED BY "\""
ESCAPED BY "\\"
LINES TERMINATED BY "\\n\\r"
FROM article_line';

そして、スクリプトで次のように呼び出します。

mysql_query($exportArticle);

しかし、残念ながら、これは何も書き込みません (ただし、エラーも発生しません)。

誰かがこれで私を助けることができれば、それは素晴らしいことです! ありがとう

編集:明確にするために、私は過去2時間半、Googleとstackoverflowの両方を閲覧してこれに対する解決策を探し、面白くない方法をたくさん試しました. 理解できない頭の中で混乱しているだけなので、答えがすでにここにあると誰かが信じている場合はお詫び申し上げます-これまでのところ、私にはうまくいきませんでした.

4

3 に答える 3

0

コードを次のように変更します

mysql_query($exportArticle) or die(mysql_error());

これにより、クエリの実行時にエラーが発生したかどうかがわかります。エラー処理を行わないmysql_queryと、エラーがあっても次のステートメントに進みます。

于 2013-05-10T15:12:10.750 に答える
0

MysqlWorkbenchをダウンロードしてから実行できます

SELECT * FROM article_line

次に、このようなボタンが表示されますここに画像の説明を入力

それをクリックするだけで、そこにcsvエクスポートオプションが表示されます

于 2013-05-10T15:18:23.747 に答える
0

うまくできたかわかりませんが、このコマンドはphpに問題があると思います。そのファイルへのアクセスが拒否されている可能性があります。結果のファイルをサーバー ホスト以外のクライアント ホストで作成する場合は、SELECT ... INTO OUTFILE を使用できません。

http://dev.mysql.com/doc/refman/5.0/en/select.html

代わりにこのようなものを使用できます。

function sqlQueryToCSV($filename, $query) {
        $result = mysql_query($query);
        $num_fields = mysql_num_fields($result);
        $headers = array();
        for ($i = 0; $i < $num_fields; $i++) {
                $headers[] = mysql_field_name($result , $i);
        }
        $fp = fopen(mysql_real_escape_string(getcwd().'\\'.$filename), 'w');
        if ($fp) {  fputcsv($fp, $headers);  while ($row = mysql_fetch_array($result)) {
         $arrayValues = array();
         foreach ($headers as $header)
         {
             $arrayValues[] = $row[$header];
         }
         fputcsv($fp, $arrayValues);  }
        }
        fclose($fp); }

ソース: http://forums.exchangecore.com/topic/907-function-to-convert-mysql-query-to-csv-file-with-php/

于 2013-05-11T15:28:18.307 に答える