我希望文件名类似于 top_queries_June.csv。在sqlite中可以做到这一点吗?
sqlite>.output(top_Queries + 选择日期('现在')).csv
我运行此批处理文件来创建一个包含热门查询的文件。
sqlite3 mydb.db ".read x.sql"
.headers ON
.mode csv
.output Top_Queries + <current month>.csv
select * from query;
.quit
作为@CL。已经指出 sqlite3 命令行实用程序不够灵活,无法做到这一点。您似乎正在使用某种 shell 来执行 sqlite3。大多数 shell 支持称为“此处文档”的功能,并且
sqlite3
实用程序支持从管道读取命令。使用这些,您可以将 x.sql
文件内联到您的 shell 脚本中。在 POSIX 兼容 shell 中,您的代码可能如下所示:
DATE=`date -I`
sqlite3 mydb.db <<EOF
.headers ON
.mode csv
.output Top_Queries${DATE}.csv
select * from query;
EOF
嗯 - 实际上你可以 - 但有点笨拙。
-- Using temporary variables
DROP TABLE IF EXISTS variables;
CREATE TEMP TABLE IF NOT EXISTS
Variables
(
name TEXT PRIMARY KEY
, value TEXT
);
-- Insert time stamp + file stub
REPLACE INTO variables
VALUES
('release', CURRENT_TIMESTAMP )
, ('now_file', strftime('%Y-%m-%dT%H-%M-%S',CURRENT_TIMESTAMP) )
;
-- Build file name for output
.output redirect.sql
SELECT
'.output file_' || value || '.txt'
FROM
variables
WHERE
name = 'now_file';
.output
-- Set output file to file name with date stamp
.read redirect.sql
SELECT
*
FROM
variables;
.output
工作良好,但由于需要访问名称中包含空格的特定目录,因此存在文件名问题,因此发现这解决了问题。
'.输出'|| '''C:\Users\800\OneDrive - OD1\Documents\Finance\Reporting\OR Costs\SQL\AA_Output_Files\OP_Basic_Connections_2324_'||值 ||'.txt'''