我正在使用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选项或任何其他选项获得以上输出或不可能吗?
答案 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选项仅适用于数据加载。它对数据卸载没有影响。固定长度格式不支持此选项。
我认为最后两个粗体部分是印刷错误并且是倒置的。他们应该读:
- 如果换行值不在记录的最后一个字段中,则换行值将被视为实际数据。
- 如果换行值位于记录的最后一个字段,则换行符值将被视为记录分隔符,除非您将其撤消。