2012-12-20 10 views
5

データベースにロードするBCPファイルを生成するための簡単なSQL文を作成しています。SQLはすべての列の区切り結果を取得します

これらのBCPファイルは次の形式である:

1|name|otherfield|otherfield1 

このようなファイルを構築するために私は現在やっている:

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

をすることなく、every columnを選択しますselect文がありますそれらの名前は?あなたはSELECT ... INTO OUTFILEを使用することができ

SELECT * with "|" from Table 
+1

これは本当に最初に行う正しい方法ですか?いずれかの列に「|」が含まれている場合はどうなりますか?あなたが適用する必要があるルールをエスケープしていませんか? – deceze

+0

@decezeこれは非常に良い点ですが、残念ながらこれらを読み込むスクリプトは「自分のコントロールできない」ものです。エスケープ文字はサポートされていません。それは良い古い "それはそれに触れることはありません"です。 –

+0

mysqlタグがある前は削除されています。どんな考え? –

答えて

4

よう

何か。

SELECT * INTO OUTFILE 'filename' 
FIELDS TERMINATED BY '|' 
LINES TERMINATED BY '\n' 
FROM yourtable; 

http://dev.mysql.com/doc/refman/5.6/en/select-into.html

+0

これはSybaseデータベース用であり、MYSQLではなく –

+0

Strange ...以前はmysqlタグが付けられましたが、タグは今はなくなりました。 –

1

あなたがファイルに出力したいなら、あなたはここで、この

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

を試すことができます私は(Windowsの場合)、新しい行にそれぞれの行を出力するため\r\nを使用している

+0

これはSybaseデータベースで、MySqlではありません –

1

Sybase ASEの場合、組み込みのbcpユーティリティを使用して、デリミタを変更するだけではいかがですか。デフォルトでは、すべての列が取得されます。

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

あなただけの「文字」(人間が読める)に基づくBCP出力を指定-cオプションと一緒に使用することができ、列区切り文字を設定するには -tオプションを使用する必要があります。 Unix/Linuxベースのシステムを使用している場合は、パイプをエスケープする必要があります。 - \

関連する問題