2012-12-20 9 views
5

Sto lavorando a una semplice istruzione SQL per generare file BCP da caricare nel database.SQL Ottieni risultati delimitati per tutte le colonne

Questi file BCP sono nel seguente formato:

1|name|otherfield|otherfield1 

Per costruire i file come questo che sto facendo attualmente:

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

C'è una dichiarazione prescelta che selezionerà every column senza dover Nominali?

Qualcosa di simile

SELECT * with "|" from Table 
+1

È davvero il modo corretto di farlo in primo luogo? Cosa succede se una delle tue colonne contiene un "|"? Non ci sono regole di fuga che dovresti applicare? – deceze

+0

@deceze questo è un ottimo punto, sfortunatamente lo script che legge questi in è "fuori dal mio controllo" e si aspetta | e non supporta alcun carattere di escape. È il buon vecchio "funziona così non toccarlo". –

+0

Prima c'era un tag mysql ma è stato rimosso. Qualche idea del perché? –

risposta

1

Se si desidera che l'output in un file, allora si può provare questo

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

qui ho usato \r\n per l'output di ogni riga su una nuova linea (su Windows)

+0

Questo per un database Sybase, non per MySql –

1

Per Sybase ASE, perché non modificare semplicemente il delimitatore utilizzando l'utilità integrata bcp. Per impostazione predefinita, acquisirà tutte le colonne.

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

è necessario utilizzare l'opzione -t per impostare il delimitatore di colonna, che può essere utilizzato solo con l'opzione -c specificando un 'carattere' (leggibile) Uscita BCP base. Se si utilizza un sistema basato su Unix/Linux, potrebbe essere necessario uscire dalla pipe, ad es. - \ t

Problemi correlati