SQLsmith和SQLines Tools

SQLsmith

<mba> "I love the smell of coredumps in the morning"

可以基于当前数据库数据随机生存SQL语句,目前支持PostgreSQL, SQLite 3 and MonetDB。最后更新时间为2018.5,官方地址: https://github.com/anse1/sqlsmith

SQLines Tools

可以转换不同数据库的DDL,DQL,DML语句。官方地址:http://www.sqlines.com/cmd

通过SQLsmith可以生成随机的SQL用来测试数据库,通过作者发现的coredumps数量来看,确实是一个有力的神器,但是由于支持的数据库类型比较少,如果重新定制其他类型的数据库支持,将是一个比较考验时间和脑力的事情。为了快速的验证这个工具的可行性,我们另辟蹊径,通过SQLines工具,来曲线实验这款工具的神奇之处。

这两个工具都与官方提供的release版本,SQLsmith的安装可能需要一些依赖,在ubuntu上按照作者的给出的debian的安装方式,可以很容易的实现部署:

apt-get install build-essential autoconf autoconf-archive libpqxx-dev libboost-regex-dev libsqlite3-dev
cd sqlsmith
autoreconf -i # Avoid when building from a release tarball
./configure
make

编译完成的SQLsmith是不依赖于当前目录下其他文件的,所以可以拷贝到别的目录执行

SQLines则下载对应的版本直接解压即可运行

此处我们以SQLsmith(postgresql)->SQLines(oracle)的过程来验证这两个工具的绝妙搭配,也就是说通过在postgressql中构造数据,然后通过SQLsmith生成随机的SQL查询,再通过SQLines转换为Oracle的语句:

./sqlsmith --verbose --dry-run --dump-all-queries --target="postgresql://user1:Changeme123@127.0.0.1:5432/postgres" > postgres/postgres.sql

./sqlines -s=postgresql -t=oracle -in=postgres/postgres.sql

此处postgresql使用的用户是新创建的,数据库则用默认的postgres,通过上面的方式便可以自动的生成Oracle语法格式的随机查询SQL。本地没有安装Oracle环境,所以执行效果无法直接验证。工具的使用在官方网站都有详细的说明,诸如SQLines支持的数据库类型等。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据