【问题标题】:How to load plain text file in teradata varbyte column using multiload utility?如何使用 multiload 实用程序在 teradata varbyte 列中加载纯文本文件?
【发布时间】:2020-06-21 08:38:27
【问题描述】:

我有如下纯文本(test.txt)文件:

335262416f8b09b7a64bd52ac05a4bf1,2083e7c817f6a6cf50047ab75dc6cef2
ccbd23e11bd592c0cdd50216a56f6522,9655676953354901390972dbf825d8a4
b0659cd7a10369142365b2e9400dc308,67b246f96011f42844cb738c5dbfb674
fbbcbb6082ddf2e9a61023622292581e,a00db01bd320026f5d8e6780826eb3b0
a61ae8a7eacb95c05fe1a91a0da4eddf,838a9a2ac37becea7274c7e824c2b924
7fac7e224f8af6595a8b751d8b94e4e2,90a4b915adb2b72354ef5644943ed518
1ca801f1e72bf45ea0fb132d10fd0c60,02d3838e229fa8570969fb0ad2ec4b02
77eca7430aefb28eb52068a03383f80a,164a52c803ab86ed6e1a37852b882db9
1454ce0a395e8fe7a0139ec4a959d6ea,c7f0d5b1fdbe91b46cf3c70e1e87b62d
715b37ef39005289576bb8690354ee19,b806e4833ca5bd409f88e75b962c7746

我正在尝试使用 multiload 实用程序将此数据加载到 teradata 表中。目标列数据类型是 varbyte。 mload 脚本如下:

.LOGTABLE dbname.log_table;

.LOGON username,password;

DATABASE dbname;

CREATE MULTISET TABLE dbname.Table_1 (id VARBYTE(50),
                name VARBYTE(50));

.BEGIN IMPORT MLOAD  TABLES Table_1  WORKTABLES WT_Table  ERRORTABLES ET_Table UV_Table;

.LAYOUT InputLayOut;

.FIELD in_id * VARBYTE(100);
.FIELD in_name * VARBYTE(100);

.DML LABEL INSERTS IGNORE DUPLICATE INSERT ROWS;

INSERT INTO dbname.Table_1 (id,name) VALUES (
                :in_id,:in_name);

.IMPORT INFILE test.txt FORMAT VARTEXT ',' LAYOUT InputLayOut APPLY INSERTS;

.END MLOAD;

.LOGOFF;
~

成功运行此脚本后,表中的值如下:

id                                                                                                    namename
----------------------------------------------------------------------------------------------------  ----------------------------------------------------------------------------------------------------
3766616337653232346638616636353935613862373531643862393465346532                                      3930613462393135616462326237323335346566353634343934336564353138
3333353236323431366638623039623761363462643532616330356134626631                                      3230383365376338313766366136636635303034376162373564633663656632
3163613830316631653732626634356561306662313332643130666430633630                                      3032643338333865323239666138353730393639666230616432656334623032
3731356233376566333930303532383935373662623836393033353465653139                                      6238303665343833336361356264343039663838653735623936326337373436
6662626362623630383264646632653961363130323336323232393235383165                                      6130306462303162643332303032366635643865363738303832366562336230
3737656361373433306165666232386562353230363861303333383366383061                                      3136346135326338303361623836656436653161333738353262383832646239
6136316165386137656163623935633035666531613931613064613465646466                                      3833386139613261633337626563656137323734633765383234633262393234
3134353463653061333935653866653761303133396563346139353964366561                                      6337663064356231666462653931623436636633633730653165383762363264
6363626432336531316264353932633063646435303231366135366636353232                                      3936353536373639353333353439303133393039373264626638323564386134
6230363539636437613130333639313432333635623265393430306463333038                                      3637623234366639363031316634323834346362373338633564626662363734

我知道正在发生隐式数据类型转换,但是如何解决它。 我正在尝试获取与表中输入文件相同的字符串。 感谢您的帮助。

【问题讨论】:

  • BYTE / VARBYTE 字段在输出为字符串时显示为十六进制值。换句话说,这里的输入没有发生转换,但是当您查询并且(可能由于字段模式隐含地)说输出应该是字符时,就会发生转换(类似于对内部数字或日期/时间所做的事情)值)。真正的问题是如何将输入字符串视为十六进制表示并存储相应的字节值?
  • 是的。你没看错。

标签: teradata implicit-conversion data-conversion mload


【解决方案1】:

假设您正在尝试将外部十六进制表示转换为相应的内部字节值,请使用

SUBSTRING(TO_BYTES('00'||:in_id,'base16') FROM 2)

如果输入值的高位被设置,TO_BYTES 将添加一个前导零字节。无条件添加然后删除前导零字节是确保最终结果前面永远不会有这个额外字节的简单方法。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2020-08-02
    • 1970-01-01
    • 2014-02-19
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2021-07-10
    相关资源
    最近更新 更多