You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在TM1 TurboIntegrator流程中导入文本文件的SQL代码并执行?

解决TM1 TurboIntegrator读取文本文件中SQL代码的问题

嘿,我来帮你搞定这个TI脚本的问题!你现在的代码在语法和逻辑上有几处小问题,我给你梳理下并修正:

现有代码的问题点

  • 文件打开时变量错误:open('vInFileName',read,In)里把变量名加了引号,TI会把'vInFileName'当成一个字面量文件名,而不是读取你定义的变量值,得去掉引号。
  • 循环语法错误:TI里的repeat循环不能像你那样直接跟在open后面,需要用标准的repeat...endrepeat结构配合文件末尾判断。
  • 字符串拼接方式错误:writef是用来输出内容到日志/控制台的,不能用来拼接字符串变量,TI里要用||来做字符串拼接。

修正后的完整TI代码

# 定义存储SQL的文本文件路径
vInFileName = 'c:\documents\code.txt';
# 初始化空字符串来存储读取到的SQL
s_SQL = '';

# 尝试打开文件,返回1表示成功打开
if( open(vInFileName, 'r', In) = 1 );
    # 循环读取每一行内容
    repeat;
        read_line(In, s_Line);
        # 判断是否已到文件末尾,是则退出循环
        if( eof(In) = 1 );
            break;
        endif;
        # 把每行内容拼接到SQL变量,加上换行符保证SQL格式正确
        s_SQL = s_SQL || s_Line || chr(10);
    endrepeat;
    # 记得关闭文件
    close(In);
else;
    # 如果文件打不开,触发流程错误
    ProcessError;
endif;

# 将读取到的SQL输出到验证文件(可选,用于确认内容是否正确)
vOutFileName = 'c:\documents\output.txt';
ASCIIOUTPUT(vOutFileName, s_SQL);

# 如果你要执行这个SQL,添加下面的代码(替换成你的ODBC数据源名称)
# ODBCExecute('你的ODBC数据源名称', s_SQL);

代码说明

  1. 文件操作逻辑:先用open函数打开文件,判断是否成功;然后用repeat循环逐行读取,通过eof()判断是否到文件末尾,避免死循环。
  2. 字符串拼接:用||把每行内容拼接到s_SQL变量,chr(10)是换行符,确保读取的SQL保持原有的格式(比如换行分隔的语句)。
  3. 错误处理:增加了文件打开失败时的ProcessError,这样流程会直接报错,不会静默执行导致后续问题。
  4. SQL执行:如果需要直接执行读取到的SQL,取消最后一行ODBCExecute的注释,替换成你的实际ODBC数据源名称即可。

内容的提问来源于stack exchange,提问作者Akshath Cm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:07:04