【问题标题】:Clojure QL : running plain SQL queriesClojure QL:运行普通 SQL 查询
【发布时间】:2013-10-28 05:55:00
【问题描述】:

有没有办法在 clojureql 中执行以下查询? :

  • insert into table1(id, name, age) select id, name, age from table2
  • 创建表 t1 (id int, name varchar(50), age varchar(100));
  • 删除表table3;
  • 分析表4;

或者有什么办法可以运行这些?即使我需要另一个库来做,也没关系。

【问题讨论】:

    标签: mysql postgresql clojure clojureql


    【解决方案1】:

    ClojureQL 主要用于查询。对插入(conj! table records) 和删除(disj! table predicate) 有一些支持,但主要是提供基于关系运算符projectselectrename 的SQL 接口。

    要执行您要求的查询,您可以访问 clojure.java.jdbc,ClojureQL 在后台使用它。

    首先,DDL 命令可以在 clojure.java.jdbc.ddl 命名空间的帮助下完成:

    ;; create table t1 (id int, name varchar(50), age varchar(100));
    (execute! db 
      (create-table :t1 
        [:id :int] 
        [:name "VARCHAR(50)"] 
        [:age "VARCHAR(100)"])
    
    ;; drop table table3;
    (execute! db 
      (drop-table :table3)
    

    我认为您那里的其他两个操作没有语法支持,但您可能可以像这样向数据库发送原始查询。

    (execute! db 
       ["insert into table1(id, name, age) select id, name, age from table2"])
    

    如果你正在做很多迁移/ddl-y 类型的事情,我认为有一些库有更多的语法支持,因为clojure.java.jdbc.ddl“故意有一个非常小的 DDL 语法”。 (可能是LobosRagtime?)

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 2014-06-18
      • 2020-02-09
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多