2014-10-18 64 views
0

我使用下面的命令輸出的SQL查詢到一個文本文件的結果:如何指定要在SQLite輸出中使用的記錄分隔符?

$sqlite3 my_db.sqlite "SELECT text FROM message;" > out.txt 

這給我的輸出是這樣的:

text for entry 1 
text for entry 2 

不幸的是,這打破了文本時包含一個換行符:

text for entry 1 
text for 
entry 2 

我如何指定輸出分隔符(我知道在文本中不存在)SQLite的輸出到第使用時e數據,所以我可以更輕鬆地解析結果?例如:

​​

回答

0

爲了單獨列的列表,你將有GROUP_CONCAT和分隔符的工作。

查詢進化:

SELECT text FROM messages; 

SELECT GROUP_CONCAT(text, "=%=") FROM messages; 

SELECT GROUP_CONCAT(text, "\r\n=%=\r\n") FROM messages; 

// to get rid of the concat comma, use replace OR change seperator 
SELECT REPLACE(GROUP_CONCAT(text, "\r\n=%="), ',', '\r\n') FROM messages; 

SQLFiddle

備選:SQLite的導出爲CSV(自定義分隔符),然後與工作。

+0

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – lxg 2014-10-18 10:16:53

+0

非常感謝您指導我。 – 2014-10-18 11:01:32

2

嘗試-separator option爲此。

$sqlite3 -separator '=%=' my_db.sqlite "SELECT text FROM message;" > out.txt 

更新1

我quess這是因爲 '-list' 默認選項。爲了關閉此選項,您需要更改當前模式。

這是模式

.mode MODE ?TABLE?  Set output mode where MODE is one of: 
          csv  Comma-separated values 
          column Left-aligned columns. (See .width) 
          html  HTML <table> code 
          insert SQL insert statements for TABLE 
          line  One value per line 
          list  Values delimited by .separator string 
          tabs  Tab-separated values 
          tcl  TCL list elements 


-list Query results will be displayed with the separator (|, by 
     default) character between each field value. The default. 

-separator separator 
     Set output field separator. Default is '|'. 

發現這個信息here

+0

謝謝,但這似乎設置了列的分隔符,而不是記錄。因此,如果我'選擇文本,guid從消息','=%='將分隔id和文本,但記錄本身仍然由換行符分隔。 (我正在使用SQLite版本3.7.13 2012-07-17 17:46:21。) – user1494672 2014-10-18 09:45:06

+0

我已經更新了我的答案,希望對您有所幫助 – Boog 2014-10-18 11:56:32

相關問題