在sql语句中停止扩展* *
问题描述:
我有一个删除语句delete * from table_name;
。目前shell将其展开以列出当前目录中的所有现有文件。我该如何转义它,以便传递给sqlplus的字符串确实是“从表名删除*”。我试过\*
'*'
和\\*
,并且都没有工作。在sql语句中停止扩展* *
确切的脚本是
#!/bin/bash
table_name = $1
delete_sql= "delete * from $table_name;"
echo $delete_sql > abc.sql
答
你只需要引用变量(和修复周围=
标志的间距):
#!/bin/bash
table_name=$1
delete_sql="delete * from $table_name;"
echo "$delete_sql" > abc.sql
答
如何
echo "delete * from table_name" | sqlplus
或
echo "delete * from table_name" > mystatements.txt
sqlplus @mystatements.txt
在一个侧面说明,你并不需要指定*在delete语句 - 匹配行中的所有字段都将被删除。
+0
+1,表示*在删除时不需要。 – devnull
你是如何生成的声明?提供代码 – SheetJS