2012-12-20 8 views
5

Ich arbeite an einer einfachen SQL-Anweisung, um BCP-Dateien zum Laden in die Datenbank zu generieren.SQL Get getrennte Ergebnisse für alle Spalten

Diese BCP-Dateien sind in folgendem Format:

1|name|otherfield|otherfield1 

Um Dateien wie diese baut ich zur Zeit mache:

SELECT id+"|"+name+"|"+otherfield+"|"+otherfield1+"\n" FROM table 

Gibt es eine Select-Anweisung, die every column ohne zu haben, wählen Sie wird benenne sie?

So etwas wie

SELECT * with "|" from Table 
+1

Ist das wirklich der richtige Weg, es in erster Linie zu tun? Was passiert, wenn eine Ihrer Spalten ein "|" enthält? Gibt es keine Regeln, die Sie umgehen sollten? – deceze

+0

@deceze das ist ein sehr guter Punkt, leider ist das Skript, das diese einliest, "außerhalb meiner Kontrolle" und erwartet | und unterstützt keine Escape-Zeichen. Es ist das gute alte "es funktioniert, also nicht anfassen". –

+0

Bevor es ein mysql-Tag gab, wurde es entfernt. Irgendeine Idee warum? –

Antwort

1

Wenn Sie wollen, dass die Ausgabe in eine Datei, dann können Sie versuchen, diese

SELECT * 
INTO OUTFILE 'D://abc.txt' 
FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n' 
FROM table 

hier habe ich \r\n zur Ausgabe jede Zeile auf einer neuen Zeile (Windows) verwendet

+0

Dies für eine Sybase-Datenbank, nicht MySql –

1

Bei Sybase ASE ändern Sie einfach den Delemiter mit dem integrierten Dienstprogramm bcp. Es wird standardmäßig alle Spalten erfassen.

bcp MYDATABASE..MYTABLE out MYTABLEFILE.bcp -Uusername -Ppassword -SMYSERVER -c -t| 

Sie haben die -t Option verwenden, um die Spalte delimeter zu setzen, die nur mit der -c Option Angabe einen ‚Charakters‘ (für Menschen lesbarer) auf der Grundlage bcp Ausgang verwendet werden können. Wenn Sie sich auf einem Unix/Linux-basierten System befinden, müssen Sie möglicherweise die Pipeline verlassen, z. - \ t

Verwandte Themen