我正在尝试使用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)"
型
我不知道发生了什么事,希望你们这些聪明人能给我点启发。
1条答案
按热度按时间a0zr77ik1#
因为你是自己构建SQL字符串(而不是使用库),所以你必须在字符串周围提供引号:
字符串
虽然这段代码允许SQL injection,但很明显这是一个只在内部使用的操作脚本,因此是“OK”的。我很确定这个脚本的用户可以删除表等,而不必通过这个脚本使用注入,所以这个脚本的存在并没有降低你的安全性。