我有一个包含以下数据的文件:
<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 insert命令:
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.
上面的日志看起来很可疑..想知道是否有新行char或其他东西
我第二次做了:
INN=201090909
然后我再次插入db2:
db2 "INSERT INTO Data(INN, ID) values ('"$INN"','"$ID"')"
现在我看到填充了两列。
想知道它是否与grep命令返回的某些数据类型的输出有关。
更新
当我做的时候
db2 "select * from Data" INN column appeared empty
但是当我做的时候
db2 "select substr(INN,1,10),ID from Data" i see the INN column populated
答案 0 :(得分:1)
在将变量传递到DB2 CLP之前,修剪任何前导空格。在确认一切正常工作之前,请在DB2 CLP上启用verbose选项。
INN=`echo $INN`
ID=`echo $ID`
db2 -v "INSERT INTO data( inn, id ) VALUES('$INN', '$ID')"