mysql - Kan vælge ... i outfile ikke gem det i en fil, men gem det i blob i stedet

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne gøre en select * from x into outfile 'c:/test.csv'.

Men i stedet for at gemme ind i en outfile test.csv jeg vil gemme den i et blob-felt.


Jeg starter spørgsmålet fra en klient på Windows .

MySQL-serveren er på en server på Windows eller Linux (kan begge være).

Men jeg vil gerne have filen klientsiden, ikke et sted på serveren.


BTW

Klientprogrammet er skrevet i Delphi 2007 og bruger ZEOS til at oprette forbindelse til MySQL-databasen på en fjernserver.


Hvordan får jeg outfile-klientsiden, i stedet for serversiden?

Bedste reference


Johan, MySql udfører denne sætning fra serveren, hvor kører. Den eneste måde at oprette filen på klientsiden på er at sende en delt mappeplacering og et filnavn, der peger på klientmaskinen. ejeren af ​​MySQL-tjenesten (daemon) skal have tilstrækkelige privilegier til at skrive til målkataloget.


fra Mysql-dokumentationen [5]



  SELECT ... TIL OUTFILE-sætningen
  er primært beregnet til at lade dig meget
  hurtigt dump et bord til en tekstfil på
  servermaskinen. Hvis du vil
  Opret den resulterende fil på nogle
  anden vært end serverværten, dig
  Normalt kan du ikke bruge SELECT ... INTO
  OUTFILE, da der ikke er nogen måde at skrive på
  en sti til filen i forhold til
  server værts filsystem.

  
  Men hvis MySQL-klientsoftwaren
  er installeret på fjernmaskinen,
  Du kan i stedet bruge en klientkommando
  som mysql -e 'SELECT ...'>
  filnavn for at generere filen på
  klient vært.

  
   Det er også muligt at oprette
  resulterende fil på en anden vært
  andet end serverværten, hvis
  Placering af filen på fjernbetjeningen
  værten kan fås ved hjælp af a
  netværkskortet path på serverens s
  filsystem
. I dette tilfælde er
  tilstedeværelse af mysql (eller nogle andre MySQL
  klientprogram) er ikke påkrævet på
  målværten.


Andre referencer 1


OK Hvis folk vil vide, har jeg lavet en løsning på TMS DBAdvGrid for at eksportere CSV-filen.


Jeg tilføjede en ny ejendom til TAdvStringGrid


public {properties}
property HideCSVHeader: boolean read FHideCSVHeader write FHideCSVHeader;


og ændret følgende kode:


procedure TAdvStringGrid.OutputToCSV(FileName:String;appendmode: Boolean; 
  Unicode: boolean);
....
//changed this code further down the procedure:
//for z := SaveStartRow to SaveEndRow do 
//Into:

MyStartRow:= SaveStartRow;
if HideCSVHeader then Inc(MyStartRow);
for z := MyStartRow to SaveEndRow do   


Så når jeg ringer


procedure TForm1.BtnExportClick(Sender: TObject);
var
  Filename: string;
  succes: Boolean;
begin
  succes:= True;
  if ExportSaveDialog.Execute then begin
    Filename:= ExportSaveDialog.FileName;
    try
      DBGridExportExact.Delimiter:= ';';
      DBGridExportExact.AlwaysQuotes:= True;
      DBGridExportExact.QuoteEmptyCells:= True;
      DBGridExportExact.SaveHiddenCells:= True;
      DBGridExportExact.HideCSVHeader:= True;
      DBGridExportExact.SaveToCSV(bestandsnaam);
    except
      succes:= False;
    end;
    if not(succes) then StatusLabel.Caption:= 'Error bla bla';
  end;
end;