加载uniq的命令的输出我有一个文件,下面的数据:DB2无法在Linux
<row num="1">
<INN>20003943
</INN>
</row>
<row num="2">
<INN>20003943
</INN>
</row>
<row num="3">
<INN>20003943
</INN>
</row>
注意INN值始终是相同的:20003943.因此uniq的必须返回一个值应该进入INN专栏。
我有下面的命令来获取INN值:
INN=$(grep "<INN>" "$file" |cut -f2 -d'>'|uniq)
INN变量越来越正确的值我想要的。我通过做echo $ INN来测试。
我有以下模式的DB2表:
create table Data (INN VARCHAR(50) NOT NULL, ID VARCHAR(30) NOT NULL)
现在我有一个低于DB2插入命令:
db2 -v "INSERT INTO Data(INN, ID) values ('"$INN"','"$ID"')"
当我运行它,我只看到ID列。 INN列是空的。正确的上面的插入命令echo声明正确输出INN值。
这是日志DB2 INSERT命令:
','4')ta(INN,ID) values ('20003943
DB20000I The SQL command completed successfully.
以上日志看起来可疑..想知道是否有一些新的行字符或其他一些事情
我第二次做的事:
INN=201090909
,然后我又做了DB2插入:
db2 "INSERT INTO Data(INN, ID) values ('"$INN"','"$ID"')"
现在我看到两列填充。
想知道它是否与grep命令返回的某些输出数据类型有关。
UPDATE
当我做
db2 "select * from Data" INN column appeared empty
,但是当我做了
db2 "select substr(INN,1,10),ID from Data" i see the INN column populated
仅仅因为$ IN具有正确的值,并不意味着您在查询中正确使用它。你很容易受到[sql注入攻击](http://bobby-tables.com),而'IN'也是一个保留字。你可能想检查它是否需要分隔。 – 2015-02-23 20:23:11
我将该变量重命名为INN,结果仍然相同。 – javaMan 2015-02-23 20:30:14
你告诉db2你正在处理哪个数据库?你在那里得到的是一张桌子的名字,这是没有多大用处。 – 2015-02-23 20:31:23