Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何指定要在SQLite';中使用的记录分隔符;谁的产量?_Sql_Sqlite - Fatal编程技术网

如何指定要在SQLite';中使用的记录分隔符;谁的产量?

如何指定要在SQLite';中使用的记录分隔符;谁的产量?,sql,sqlite,Sql,Sqlite,我使用以下命令将SQL查询结果输出到文本文件: $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指定输出数据时使用的输出分隔符(我知道文本中不存在),以便更轻松地解析结果?例如: text

我使用以下命令将SQL查询结果输出到文本文件:

$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指定输出数据时使用的输出分隔符(我知道文本中不存在),以便更轻松地解析结果?例如:

text for entry 1
=%=
text for 
entry 2
=%=
text for entry 3
试试这个

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

我怀疑这是因为'-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 '|'.
.mode?表格?设置输出模式,其中模式为:
csv逗号分隔值
列左对齐列。(见第1.2条宽度)
html代码
表的insert SQL insert语句
每行一个值
列出由.separator字符串分隔的值
制表符制表符分隔值
tcl列表元素
-列表查询结果将以分隔符(|)显示,按
默认值)每个字段值之间的字符。默认值。
-分离器
设置输出字段分隔符。默认值为“|”。
找到此信息

请尝试获取此信息

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

我怀疑这是因为'-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 '|'.
.mode?表格?设置输出模式,其中模式为:
csv逗号分隔值
列左对齐列。(见第1.2条宽度)
html代码
表的insert SQL insert语句
每行一个值
列出由.separator字符串分隔的值
制表符制表符分隔值
tcl列表元素
-列表查询结果将以分隔符(|)显示,按
默认值)每个字段值之间的字符。默认值。
-分离器
设置输出字段分隔符。默认值为“|”。

找到此信息

若要分隔列,您必须使用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;


备选方案:Sqlite到CSV导出(使用自定义分隔符),然后使用该选项。

为了分隔列,您必须使用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;


备选方案:Sqlite到CSV导出(使用自定义分隔符),然后使用它。

我有同样的问题,有一个更简单的解决方案。我在以下网站上找到:

.COL?行吗?更改列和行分隔符

例如:

    sqlite> .separator | ,
    sqlite> select * from example_table;

1|3,1|4,1|15,1|21,1|33,2|13,2|16,2|32,
或不带柱分隔符:

    sqlite> .separator '' ,
    sqlite> select * from example_table;

13,14,115,121,133,213,216,232,
或者,要回答上面提出的具体问题,只需以下几点:

    sqlite> .separator '' \r\n=%=\r\n
    sqlite> select * from message;

text for entry 1
=%=
text for
entry 2
=%=
text for entry 3
=%=

我有同样的问题,有一个更简单的解决办法。我在以下网站上找到:

.COL?行吗?更改列和行分隔符

例如:

    sqlite> .separator | ,
    sqlite> select * from example_table;

1|3,1|4,1|15,1|21,1|33,2|13,2|16,2|32,
或不带柱分隔符:

    sqlite> .separator '' ,
    sqlite> select * from example_table;

13,14,115,121,133,213,216,232,
或者,要回答上面提出的具体问题,只需以下几点:

    sqlite> .separator '' \r\n=%=\r\n
    sqlite> select * from message;

text for entry 1
=%=
text for
entry 2
=%=
text for entry 3
=%=

谢谢,但这似乎是为列设置分隔符,而不是为记录设置分隔符。因此,如果我要“从消息中选择文本,guid”,则“=%=”将分隔id和文本,但记录本身仍由换行符分隔。(我使用的是SQLite版本3.7.13 2012-07-17 17:46:21。)谢谢,但这似乎为列设置了分隔符,而不是记录。因此,如果我要“从消息中选择文本,guid”,则“=%=”将分隔id和文本,但记录本身仍由换行符分隔。(我使用的是SQLite版本3.7.13 2012-07-17 17:46:21。)这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。非常感谢您对我的指导。这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。非常感谢您对我的指导。