是否可以将当前日期附加到文件名is sqlite?

mzillmmw  于 2023-06-23  发布在  SQLite
关注(0)|答案(2)|浏览(114)

我希望文件名是top_queries_June. csv。在SQLite中可以做到这一点吗?
sqlite>.output(top_Queries + Select date('now ')).csv
我运行这个批处理文件来创建一个包含顶级查询的文件。

批量文件:

sqlite3 mydb.db ".read x.sql"

x.sql:

.headers ON
    .mode csv
    .output Top_Queries + <current month>.csv
    select * from query;
    .quit
0pizxfdo

0pizxfdo1#

正如@CL.已经指出的,sqlite3命令行实用程序不够灵活,无法做到这一点。您似乎正在使用某种shell来执行sqlite3。大多数shell都支持一个名为“here document”的特性,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
cuxqih21

cuxqih212#

嗯-其实你可以-但是有点笨拙。
1.使用临时表中的变量构建输出文件名
1.将文件名转储到SQL文件中
1.读取表达式转储以设置带有日期时间戳的输出文件

-- 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

相关问题