我有一个非常大的shell脚本来处理数据并输出到bash数组。我想将这些输出插入到PostgreSQL中,但是在bash中执行它意味着我需要手动转义字符串,构造SQL语句,并将SQL语句传递给psql,这样的代码容易出错且难看。是否有任何更适合shell脚本的SQL工具?例如,像
这样的命令行工具sql_insert my_sql_table 'value_1' 'value_2' 'value_3'
会很完美。或者从管道接受CSV格式的东西也可以。
当然我可以轻松编写一个Python脚本来实现它,但我只是想知道是否有一些现有的工具。
答案 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)