首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于简单的SQL操作,有没有bash-scriptable工具?

对于简单的SQL操作,有没有bash-scriptable工具?
EN

Stack Overflow用户
提问于 2017-10-22 23:40:05
回答 2查看 56关注 0票数 0

我有一个相当大的shell脚本,可以处理数据并输出到bash数组。我想将这些输出插入到PostgreSQL中,但是在bash中这样做意味着我需要手动转义字符串,构造SQL语句,并通过管道将SQL语句传递给psql,这是一种容易出错且难看的代码。有没有比shell脚本更友好的SQL工具?例如,命令行工具,如

代码语言:javascript
复制
sql_insert my_sql_table 'value_1' 'value_2' 'value_3'

那就太完美了。或者,从管道接受CSV格式的内容也是可以的。

当然,我可以很容易地写一个Python脚本来做这件事,但我只是想知道是否有一些现有的工具来做这件事。

EN

回答 2

Stack Overflow用户

发布于 2017-10-23 00:04:28

尝试如下所示:

代码语言:javascript
复制
psql -U DB <<'EOF'
INSERT INTO foobar VALUES('foo', 'bar', 'base');
EOF

没有经过测试,也许你必须适应一点,这只是一个想法

票数 0
EN

Stack Overflow用户

发布于 2017-10-23 01:04:37

代码语言:javascript
复制
#!/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

输出:

代码语言:javascript
复制
SET
DROP TABLE
CREATE TABLE
INSERT 0 1
 id | foobar 
----+--------
  1 | wtf
(1 row)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46875957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档