Netezza:需要帮助理解nzload执行中的lfinstring选项

时间:2017-04-10 06:46:51

标签: netezza

我正在使用Netezza数据库,我需要帮助理解nzload命令中的lfinstring选项。

有人可以在nzload执行期间向我解释上面的选项如何使用示例。

以下是示例: cat test.sql_old

"so this is a <LF>

test not as last char of the string"

"and this is a <LF> as last char of the string

"

nzload命令

nzload -db TEST -t tab1  -nullValue '..' -delim '0x1e' -ctrlChars -timeDelim '.' -dateTimeDelim '-'  -df /test/test.sql_old -lfinstring

当前输出:

nzsql TEST -c "select * from TAB1"  
                                                 COL1
------------------------------------------------------------------------------------------------------
"so this is a <LF>

"and this is a <LF> as last char of the string

test not as last char of the string"

"

(4 rows) 

预期产出:

仅限2行

第一行

so this is a test not as last char of the string

第二行

and this is a as last char of the string

我们可以使用-lfinstring选项或任何其他选项获得以上输出或不可能吗?

2 个答案:

答案 0 :(得分:0)

我想这个例子说大多数人都知道:

  

以下命令指定嵌入的换行值   记录分隔符也被视为真实数据:

nzload -u admin -pw password -host nzhost -db emp -t name -df /tmp -lfinString

I found it on this IBM online manual page

我希望这会有所帮助,否则请注明:)

答案 1 :(得分:0)

以下是如何使用lfinstring

的示例
[nz@netezza ~]$ cat test.txt
so this is a test
not as last char of the string|row1
and this is a as last char of the string
|row2
[nz@netezza ~]$ nzsql -d testdb -c "\d lf_test"
                       Table "LF_TEST"
 Attribute |         Type          | Modifier | Default Value 
-----------+-----------------------+----------+---------------
 COL1      | CHARACTER VARYING(50) |          | 
 COL2      | CHARACTER VARYING(10) |          | 
Distributed on random: (round-robin)

[nz@netezza ~]$ nzload -db testdb -df test.txt -t lf_test -lfinstring  -delim '|'
Load session of table 'LF_TEST' completed successfully
[nz@netezza ~]$ nzsql -d testdb -c "select * from lf_test order by col2"
                       COL1                       | COL2 
--------------------------------------------------+------
 so this is a test
not as last char of the string | row1
 and this is a as last char of the string
        | row2
(2 rows)

请注意,换行仍然在数据中,因此它会向屏幕呈现四行,但您可以看到它实际上是两行。

现在,让我们参考lfinstring选项的实际文档,可以找到here,注意粗体部分。

  

LFINSTRING选项

     

指定是否也将记录分隔符的嵌入换行值视为实际数据。   可接受的值是真还是假。默认值为false。 请勿在值周围加上引号。

     

默认情况下,换行值是记录分隔符。您可以使用-recDelim选项将记录分隔符更改为其他值。   如果LFinString选项的值为true且记录分隔符为换行符值,则无论FillRecord选项的设置如何,以下行为都适用:

     
      
  • 如果换行值不在字段的最后一条记录中,则换行值将被视为实际数据。
  •   
  • 如果换行值位于字段的最后一条记录中,则换行值将被视为记录分隔符,除非您将其撤消。
  •   
     

LFinString选项仅适用于数据加载。它对数据卸载没有影响。固定长度格式不支持此选项。

我认为最后两个粗体部分是印刷错误并且是倒置的。他们应该读:

  
      
  • 如果换行值不在记录的最后一个字段中,则换行值将被视为实际数据。
  •   
  • 如果换行值位于记录的最后一个字段,则换行符值将被视为记录分隔符,除非您将其撤消。
  •