首页 文章

如何从SQL查询(JOOQ)获取列参数

提问于
浏览
1

我有一个问题是否有可能从JOOQ -java中的SQL查询中获取参数 .

我正在使用这样的东西:

for (Query query: sqlQueries){
    for (Param param: query.getParams().values()) {
         System.out.println("P: "+ param.getName());
    }
}

SQL查询:

...
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Kotov', 'Peter', '22');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('Alhambra', 'Seat', '33');
insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) values ('F50', 'Ferrari', '100');

会像那样处理(输出):

P: Kotov
P: Peter
P: 22
P: Alhambra
P: Seat
P: 33
P: F50
P: Ferrari
P: 100

我还需要获得具有如下列名称的输出:

P: Priezvisko
P: Meno
P: Vek
P: Kotov
P: Peter
P: 22
... rest

有可能,因为我无法弄清楚如何?如果我可以问,是否有可能从查询中获取tableName? (我们示例中的'filetest')

为什么我需要这个是让这些参数创建CSV文件(SQL - > CSV)从提到的SQL创建CSV:

Meno,Priezvisko,Vek
"Peter","Kotov","22"
"Seat","Alhambra","33"
"Ferrari","F50","100"

1 回答

  • 0

    特定参数恰好与SQL语句中的列“链接”这一事实对您来说是一个相当随意的假设 . 一个简单的例子可以打破你的假设是这句话:

    insert into `filetest` (`Priezvisko`, `Meno`, `Vek`) 
    values ((select 'Kotov' from dual where 1 = 0), 'Peter', '22');
    

    该语句现在包含5个参数:

    P: Kotov -- Relevant
    P: 1     -- Irrelevant
    P: 0     -- Irrelevant
    P: Peter -- Relevant
    P: 22    -- Relevant
    

    您可能希望使用生成的 FiletestRecord ,它本质上是一个 Map<Field<?>, ?> ,可以通过调用 record.insert()record.update() 或者转换为 INSERTUPDATE 语句 .

    ctx.insertInto(FILETEST).set(filetestRecord).execute();
    

相关问题