sql >> Database teknologi >  >> RDS >> Mysql

Kør 2 sql-forespørgsler med 1 forespørgsel for at gemme forespørgselsresultatet som .csv-format

Du ønsker ikke, at det skal køre som én forespørgsel. Det er normalt bedre at have mange små simple forespørgsler i stedet for én kompliceret forespørgsel. Faktisk vil jeg foreslå, at du opdaterer din kode til at have endnu flere forespørgsler, for eksempel bør indholdet af "ikke eksisterer()" ikke udføres som en underforespørgsel, det skal være en helt separat forespørgsel for at forbedre ydeevnen.

Der er to dele, først skal du sende de korrekte HTTP-headere for at udløse en CSV-download:

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );

Så udskriv blot dataene i CSV-format:

while ($row = mysql_fetch_array($myQuery)) {
  $first = true;
  foreach ($row as $cell) {
    if ($first)
      $first = false;
    else
      print ',';

    print '"' . addslashes($cell) . '"';
  }
  print "\n";
}

Bemærk:CSV er et dårligt format, og dette vil kun fungere i nogle udgaver af Microsoft Excel. Afhængigt af hvor brugeren bor (f.eks. Europa) fungerer det muligvis ikke korrekt. For de fleste udgaver af Excel vil ovenstående dog fungere. Der er ingen god løsning bortset fra at undgå at bruge CSV.




  1. Jeg kan ikke finde ud af, hvordan jeg opdaterer min sidste inlog-tid

  2. SQL Server-destination vs OLE DB-destination

  3. gemme data i tabel ved stigende ID'er

  4. Opdater med parameter ved hjælp af rumpersistent bibliotek