db2无法在linux中加载uniq命令的输出

时间:2015-02-23 20:18:16

标签: bash shell db2

我有一个包含以下数据的文件:

<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

1 个答案:

答案 0 :(得分:1)

在将变量传递到DB2 CLP之前,修剪任何前导空格。在确认一切正常工作之前,请在DB2 CLP上启用verbose选项。

INN=`echo $INN`
ID=`echo $ID`
db2 -v "INSERT INTO data( inn, id ) VALUES('$INN', '$ID')"