postgresql 使用bash将数据插入postgres

rkkpypqq  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(118)

我正在尝试使用bash向postgres中插入值。在我的搜索过程中,我确实发现了这个:
Inserting data into postgres db using shell script
我写的脚本不工作,并给出以下错误:

ERROR: column "task does not exist
LINE 1: INSERT INTO my_table (task,date,quad,branch) VALUES (task,2024-0...
                                                             ^
HINT:  There is a column named "task" in table "my_table", but it cannot be referenced from this part of the query.

字符串
我的剧本在这里:

#!/bin/bash
server=my_server
database=postgres
user=my_user

taskInput="task"
dateInput="2024-01-03"
quadinput="input_quad"
branchInput="shipping"
psql -U $user -w -h $server -p 5432 -d $database -c  "INSERT INTO my_table (task,date,quad,branch) VALUES ($taskInput,$dateInput,$quadInput,$branchInput)"


我不知道发生了什么事,希望你们这些聪明人能给我点启发。

a0zr77ik

a0zr77ik1#

因为你是自己构建SQL字符串(而不是使用库),所以你必须在字符串周围提供引号:

psql -U $user -w -h $server -p 5432 -d $database -c "INSERT INTO my_table (task,date,quad,branch) VALUES ('$taskInput','$dateInput','$quadInput','$branchInput')"

字符串
虽然这段代码允许SQL injection,但很明显这是一个只在内部使用的操作脚本,因此是“OK”的。我很确定这个脚本的用户可以删除表等,而不必通过这个脚本使用注入,所以这个脚本的存在并没有降低你的安全性。

相关问题