Skip to content

chengyuxing/sqlc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

关于SQLC

支持:Linux | MacOS | Windows(勉强可用)

  • 一个简单的sql命令行工具,支持增、删、改、查,批量执行,事务,导出结果;
  • 支持mysql, oracle, postgreSQL, sqlServer,sqlite等数据库,可自行添加jdbc驱动文件到drivers目录下;
  • 支持导出文件类型:xlsx,json,tsv,csv, sql
  • 支持数据库关键字提示,根据指定数据库加载completion文件下的配置文件**(依赖C库:readlinerlwrap)**;
  • 支持路径自动完成提示**(依赖C库:readlinerlwrap)**;
  • 支持命令行历史记录**(依赖C库:readlinerlwrap)**;
  • 支持命令模式和交互模式;

2.x版不再依赖readline和rlwrap

预编译SQL参数占位符

仅支持执行单条预编译sql

预编译sql使用的参数占位符为传名参数,除基本数据类型文件外,其余需要使用类型转换

select * from test.tb where id < :id;
  • 支持的基本数据类型:string("some string"), boolean(true, false), double, int, null

  • 支持的数据类型:int[], float[], double[], string[], long[],需要使用类型声明,如下:

    [1,2,3,4]::int[] #默认使用,号
    [a,b,c]::string[]
    [a;b;c]::string[;] #使用;号分隔数组
  • 支持文件:/usr/local/a.txt

  • 支持日期格式:yyyy-MM-dd, yyyy/MM/dd, yyyy-MM-dd HH:mm:ss, HH:mm:ss,需要使用类型声明如下:

    2021-12-23::date
    

关于批量执行SQL

默认的多行sql块以单分号(;)分隔,参数-d:d可自定义

如果文件路径以@开头,则文件使用按行流式读取,内部则调用jdbc的executeBatch 方法进行批量执行ddl和dml语句,一般用于导入数据等大型文本文件执行大量sql;

  • -e@/usr/local/a.sql
  • :load @/usr/local/a.sql

一般情况则执行预编译操作批量执行(建议小数据量)

  • -e"select * from mytable;;select now();;create or replace function..." -d";;"
  • -e/usr/local/a.sql
  • :load /usr/local/a.sql

关于导出查询结果

使用重定向符 > 导出查询结果,如果以.sql结尾,则导出insert语句,表名为文件名,否则根据-f:[tsv|csv|json|excel]导出相应类型文件。

  • 导出缓存::get res0 > /usr/local/res.sql
  • :load /usr/local/query.sql > /usr/local/res.sql
  • -e"select * from table > /usr/local/res" -fjson
  • -e"/usr/local/query.sql > /usr/local/res.sql"

例子

  • ./sqlc.sh -ujdbc:postgresql://127.0.0.1:5432/postgres -nchengyuxing -p
  • ./sqlc.sh -ujdbc:postgresql://127.0.0.1:5432/postgres -nchengyuxing -p -e"select * from test.region where id < 10" -fjson
  • ./sqlc.sh -ujdbc:postgresql://127.0.0.1:5432/postgres -nchengyuxing -p -e/Users/chengyuxing/Downloads/a.sql

帮助文档

  • 命令模式 sqlc.sh -hsqlc.sh --help
  • 交互模式 :help

截图

交互模式基本查询,切换数据展示视图 Overview 命令模式执行输出一条sql查询 Overview 命令模式批量执行sql文件中的一些sql Overview 预编sql执行效果图 Overview