Wie man Daten von SQL in eine vorhandene Datei anhängen
-
13-10-2019 - |
Frage
hat SQL die Möglichkeit, Daten in eine Datei auszugeben, die INTO OUTFILE Option, für exmaple
SELECT * from FIshReport INTO OUTFILE './FishyFile'
Das Problem ist, wird dieser Befehl nur zulässig, wenn die Datei nicht, bevor es noch nicht gab. Es erstellt die Datei und gibt dann die Daten. So ist es eine Möglichkeit, Daten in eine Datei auf diese Weise anhängen?
Lösung
Wie die MySQL-Seite auf SELECT Syntax schlägt vor:
http://dev.mysql.com/doc/refman/ 5.0 / de / select.html
Die Alternative dazu ist die SELECT aus dem MySQL-Client zu erteilen:
However, if the MySQL client software is installed on the remote machine,
you can instead use a client command such as mysql -e "SELECT ..." > file_name
to generate the file on the client host.
, die in Ihrem Fall würde modifiziert werden, um sein:
mysql -e "SELECT * from FishReport" >> file_name
so, dass man einfach Append in die Datei.
Von Ihrem Tcl-Skript, können Sie einfach ausgeben dies als exec Befehl:
Andere Tipps
ich denke, MySQL erlaubt keine Daten an eine vorhandene Datei anhängen oder eine vorhandene Datei aus Sicherheitsgründen zu überschreiben. Eine Arbeit um sein könnte resuts in separaten Dateien zu speichern und dann append die Verwendung der Datei IO.
Sie können immer die Ausgabe von SQL-Skript anhängen zu einer Datei mit >>
Zum Beispiel (für Sybase):
isql < script.sql >> outputfile.out
Ich kann Ihnen nicht sagen, was das Äquivalent für MySQL ist aber das Prinzip sollte gleich sein.
Natürlich Ausgabe werden alle gehen in eine Datei so, wenn Ihr SQL-Skript verschiedene SQL wählt an verschiedene Ausgabedateien ausgibt, dann müssen Sie würde das Skript aufzuteilen.
Man könnte hinzufügen, nur um es zu einer Variablen. Verwenden Sie dann eine SELECT mit UNION.
declare t varchar(100);
set @myvar = concat('
select * INTO OUTFILE \'',file,'\'
from (
select \'',t,'\'
union all
SELECT col from tbl where x
) a'
);
PREPARE stmt1 FROM @myvar;
EXECUTE stmt1;
Deallocate prepare stmt1;