是否有用于简单SQL操作的bash-scriptable工具?

时间:2017-10-22 15:40:05

标签: sql bash shell

我有一个非常大的shell脚本来处理数据并输出到bash数组。我想将这些输出插入到PostgreSQL中,但是在bash中执行它意味着我需要手动转义字符串,构造SQL语句,并将SQL语句传递给psql,这样的代码容易出错且难看。是否有任何更适合shell脚本的SQL工具?例如,像

这样的命令行工具
sql_insert my_sql_table 'value_1' 'value_2' 'value_3'

会很完美。或者从管道接受CSV格式的东西也可以。

当然我可以轻松编写一个Python脚本来实现它,但我只是想知道是否有一些现有的工具。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

psql -U DB <<'EOF'
INSERT INTO foobar VALUES('foo', 'bar', 'base');
EOF

未经测试,也许你必须适应一点,这只是为了这个想法

答案 1 :(得分:-1)

#!/bin/sh

DB_NAME="omg"
SCHEMA_NAME="tmp"
TABLE_NAME="omg"
COLUMN_NAME="foobar"
COLUMN_VALUE="wtf"
psql -U postgres ${DB_NAME} <<OMG
SET search_path=${SCHEMA_NAME};

DROP TABLE "${TABLE_NAME}";
CREATE TABLE "${TABLE_NAME}"
        ( id SERIAL NOT NULL PRIMARY KEY
        , ${COLUMN_NAME} text
         );
   -- single quotes here-------------------------------v---------------V
INSERT INTO "${TABLE_NAME}" ( ${COLUMN_NAME} )VALUES ( '${COLUMN_VALUE}' );

SELECT*FROM ${TABLE_NAME};
OMG

输出:

SET
DROP TABLE
CREATE TABLE
INSERT 0 1
 id | foobar 
----+--------
  1 | wtf
(1 row)