Cmd Isql Less 运算符
Cmd Isql Less Operator
我有一个 firebird 数据库,我正在尝试做一些事情。当我尝试这个命令时它不起作用。
echo DELETE FROM TXN WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey localhost:C:\aaa.fdb
SALESBEGIN
列的类型为 DATETIME
但是当我删除“<”运算符时它的工作。我该如何解决?这是输出;
C:\Program Files (x86)\Firebird\Firebird_2_0\bin>echo "DELETE FROM TXN
WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey
localhost:C:\aaa.fdb
Database: localhost:C:\aaa.fdb, User: sysdba
SQL> CON> Expected end of statement, encountered EOF
问题是 <
,它是命令行的重定向字符。您需要使用 ^
转义它。
然而,根据 this site:
When a pipe is used, the expressions are parsed twice. First when the expression before the pipe is executed and a second time when the expression after the pipe is executed. So to escape any characters in the second expression double escaping is needed
因此您需要三个 ^
个字符来转义 <
符号:
echo DELETE FROM TXN WHERE SALESBEGIN ^^^< current_date - 2; | isql -u sysdba -p masterkey localhost:C:\aaa.fdb
根据我的经验,如果您只是将语句放入 SQL 脚本,然后 运行 该脚本,这样的事情会 容易得多 。在 isql
中是 isql -i delete.sql
如果您仍想将所有内容保存在一个批处理文件中,您可以这样做:
echo DELETE FROM TXN WHERE SALESBEGIN ^< current_date - 2;> _temp_delete.sql
isql -i _temp_delete.sql -u sysdba -p masterkey localhost:C:\aaa.fdb
您仍然需要转义那里的 <
但只需转义一次,因为不涉及 |
。
有关如何在 Windows 命令行或批处理脚本中转义特殊字符的详细信息,另请参阅 Batch character escaping。
我有一个 firebird 数据库,我正在尝试做一些事情。当我尝试这个命令时它不起作用。
echo DELETE FROM TXN WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey localhost:C:\aaa.fdb
SALESBEGIN
列的类型为 DATETIME
但是当我删除“<”运算符时它的工作。我该如何解决?这是输出;
C:\Program Files (x86)\Firebird\Firebird_2_0\bin>echo "DELETE FROM TXN
WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey
localhost:C:\aaa.fdb
Database: localhost:C:\aaa.fdb, User: sysdba
SQL> CON> Expected end of statement, encountered EOF
问题是 <
,它是命令行的重定向字符。您需要使用 ^
转义它。
然而,根据 this site:
When a pipe is used, the expressions are parsed twice. First when the expression before the pipe is executed and a second time when the expression after the pipe is executed. So to escape any characters in the second expression double escaping is needed
因此您需要三个 ^
个字符来转义 <
符号:
echo DELETE FROM TXN WHERE SALESBEGIN ^^^< current_date - 2; | isql -u sysdba -p masterkey localhost:C:\aaa.fdb
根据我的经验,如果您只是将语句放入 SQL 脚本,然后 运行 该脚本,这样的事情会 容易得多 。在 isql
中是 isql -i delete.sql
如果您仍想将所有内容保存在一个批处理文件中,您可以这样做:
echo DELETE FROM TXN WHERE SALESBEGIN ^< current_date - 2;> _temp_delete.sql
isql -i _temp_delete.sql -u sysdba -p masterkey localhost:C:\aaa.fdb
您仍然需要转义那里的 <
但只需转义一次,因为不涉及 |
。
有关如何在 Windows 命令行或批处理脚本中转义特殊字符的详细信息,另请参阅 Batch character escaping。