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

问题描述 投票:0回答:3

我希望文件名类似于 top_queries_June.csv。在sqlite中可以做到这一点吗?

sqlite>.output(top_Queries + 选择日期('现在')).csv

我运行此批处理文件来创建一个包含热门查询的文件。

批处理文件:

    sqlite3 mydb.db ".read x.sql"

x.sql:

    .headers ON
    .mode csv
    .output Top_Queries + <current month>.csv
    select * from query;
    .quit
sqlite filenames output
3个回答
1
投票

作为@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

0
投票

嗯 - 实际上你可以 - 但有点笨拙。

  1. 使用临时表中的变量构建输出文件名
  2. 将文件名转储到 SQL 文件中
  3. 读取表达式转储以设置带有日期时间戳的输出文件
-- 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

0
投票

工作良好,但由于需要访问名称中包含空格的特定目录,因此存在文件名问题,因此发现这解决了问题。

'.输出'|| '''C:\Users\800\OneDrive - OD1\Documents\Finance\Reporting\OR Costs\SQL\AA_Output_Files\OP_Basic_Connections_2324_'||值 ||'.txt'''

© www.soinside.com 2019 - 2024. All rights reserved.