有没有办法通过 bteq 脚本将 teradata 中的 blob 列导出到 CSV 文件?
Is there a way to export a blob column in teradata to a CSV file via a bteq script?
我有以下 shell 脚本,其中有一个 bteq 调用,用于将 Teradata BLOB 字段导出到文本文件。我发现如果文件大于 64K,它就不会被写入。我知道我可以设置 INDICDATA DEFERLIMITS=0,0 然后它将在我提供的文件名中写入它创建的 BLOB 文件的名称。我提供的文件名包含一个路径,该文件被写入正确的位置。我在服务器上找不到正在创建的 BLOB 文件。我以为它会在同一目录中创建,但我没有看到它。我还必须设置那个位置吗?如果可以,怎么做?
-------------------------------
Shell Script with BTEQ:
-----------------------------------
#!/bin/sh
modelId=
runId=
filename=
file1="/export/home/pc8admin/pc8store/infa_shared/bin/ENGV_D042A/${filename}"
echo $modelId
echo $runId
echo $filename
echo $file1
bteq <<lbl_btq
.RUN FILE=/export/home/pc8admin/pc8store/infa_shared/OAS/td_mlbtq_engv_etl.scr
.EXPORT INDICDATA FILE = $file1;
.SET LARGEDATAMODE ON;
.EXPORT LDOPREFIX 'doc_'
.EXPORT LDOSUFFIX 'txt'
DATABASE XXX_XX;
.IF errorlevel <> 0 THEN .QUIT errorcode;
SELECT IL.FIL_OBJ_UD
FROM XXX_XX.SIMLTR_CFG_INV_LOAD IL
INNER JOIN XXX_XX.SIMLTR_CFG_INV_LOAD_STAT ST ON IL.FIL_ID = ST.FIL_ID
WHERE ST.MDL_ID = $modelId AND ST.SIMLTR_RUN_ID = $runId AND ST.INV_TYP_ID = 'E'
AND IL.FIL_ID = 5;
.IF errorlevel <> 0 THEN .QUIT errorcode;
.END EXPORT
.LOGOFF
.EXIT 0
lbl_btq
我提供的文件名包含文本:doc_FIL_OBJ_UD_r1.txt
我找不到 doc_FIL_OBJ_UD_r1.txt 文件。
LDOPREFIX 除了一些文件名前缀字符外,还可以包含相对或绝对路径。如果没有包含路径,调用 BTEQ 时的当前工作目录将是假定的位置。
我有以下 shell 脚本,其中有一个 bteq 调用,用于将 Teradata BLOB 字段导出到文本文件。我发现如果文件大于 64K,它就不会被写入。我知道我可以设置 INDICDATA DEFERLIMITS=0,0 然后它将在我提供的文件名中写入它创建的 BLOB 文件的名称。我提供的文件名包含一个路径,该文件被写入正确的位置。我在服务器上找不到正在创建的 BLOB 文件。我以为它会在同一目录中创建,但我没有看到它。我还必须设置那个位置吗?如果可以,怎么做?
-------------------------------
Shell Script with BTEQ:
-----------------------------------
#!/bin/sh
modelId=
runId=
filename=
file1="/export/home/pc8admin/pc8store/infa_shared/bin/ENGV_D042A/${filename}"
echo $modelId
echo $runId
echo $filename
echo $file1
bteq <<lbl_btq
.RUN FILE=/export/home/pc8admin/pc8store/infa_shared/OAS/td_mlbtq_engv_etl.scr
.EXPORT INDICDATA FILE = $file1;
.SET LARGEDATAMODE ON;
.EXPORT LDOPREFIX 'doc_'
.EXPORT LDOSUFFIX 'txt'
DATABASE XXX_XX;
.IF errorlevel <> 0 THEN .QUIT errorcode;
SELECT IL.FIL_OBJ_UD
FROM XXX_XX.SIMLTR_CFG_INV_LOAD IL
INNER JOIN XXX_XX.SIMLTR_CFG_INV_LOAD_STAT ST ON IL.FIL_ID = ST.FIL_ID
WHERE ST.MDL_ID = $modelId AND ST.SIMLTR_RUN_ID = $runId AND ST.INV_TYP_ID = 'E'
AND IL.FIL_ID = 5;
.IF errorlevel <> 0 THEN .QUIT errorcode;
.END EXPORT
.LOGOFF
.EXIT 0
lbl_btq
我提供的文件名包含文本:doc_FIL_OBJ_UD_r1.txt
我找不到 doc_FIL_OBJ_UD_r1.txt 文件。
LDOPREFIX 除了一些文件名前缀字符外,还可以包含相对或绝对路径。如果没有包含路径,调用 BTEQ 时的当前工作目录将是假定的位置。