我有一个相当大的shell脚本,可以处理数据并输出到bash数组。我想将这些输出插入到PostgreSQL中,但是在bash中这样做意味着我需要手动转义字符串,构造SQL语句,并通过管道将SQL语句传递给psql,这是一种容易出错且难看的代码。有没有比shell脚本更友好的SQL工具?例如,命令行工具,如
sql_insert my_sql_table 'value_1' 'value_2' 'value_3'那就太完美了。或者,从管道接受CSV格式的内容也是可以的。
当然,我可以很容易地写一个Python脚本来做这件事,但我只是想知道是否有一些现有的工具来做这件事。
发布于 2017-10-23 00:04:28
尝试如下所示:
psql -U DB <<'EOF'
INSERT INTO foobar VALUES('foo', 'bar', 'base');
EOF没有经过测试,也许你必须适应一点,这只是一个想法
发布于 2017-10-23 01:04:37
#!/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)https://stackoverflow.com/questions/46875957
复制相似问题