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

db2 not able to load output of uniq command in 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 必须始终 return 应进入 INN 列的单个值。

我正在使用以下命令获取该 INN 值:

INN=$(grep "<INN>" "$file" |cut -f2 -d'>'|uniq)

INN 变量正在获得我想要的正确值。我通过 echo $INN.

进行了测试

我有一个具有以下架构的 db2 table:

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 插入命令的日志:

 ','4')ta(INN,ID) values ('20003943
  DB20000I  The SQL command completed successfully.

上面的日志看起来很可疑..想知道是否有换行字符或其他东西

我第二次做了 :

  INN=201090909

然后我再次插入 db2:

   db2 "INSERT INTO Data(INN, ID) values ('"$INN"','"$ID"')"

现在我看到填充了两列。

想知道它是否与某些数据类型的输出有关return由 grep 命令编辑。

更新

当我做的时候

 db2 "select * from Data" INN column appeared empty

但是当我这样做的时候

 db2 "select substr(INN,1,10),ID from Data" i see the INN column populated

Trim 在将变量传递到 DB2 CLP 之前关闭任何前导空格。在您确认一切工作正常之前,请在 DB2 CLP 上启用详细选项。

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