读取csv并获取表数据并写入文本文件输出

问题描述 投票:0回答:1

我有一个 csv 文件,其中包含下面提到的 ubuntu 中 sql server 实例中的表名称数据。

Tables
TableName1
TableName2
TableName3
.
.
.

我想读取这个 csv 文件,我想获取表数据并存储为 ${table_name}.csv

我如何使用 pentaho 来实现这一点。我尝试了一种方法,但我想知道是否有任何内置方法或更有效的方法。我是 pentaho 的新手,所以任何建议都很重要。

这些是我已经尝试过的工作的细节。 job screenshot

  • 设置变量的第一个步骤是初始化循环的变量
  • 在 csv 读取器作业中,我使用 bash 脚本读取 csv 文件和总行数,并将其作为变量存储在 config.properties 文件中
#!/bin/bash

# CSV file path
csv_file="/home/ubuntuv2204/taskDir/tables.csv"
property_file="/home/ubuntuv2204/taskDir/dwconfig.properties"
# Get the total number of rows in the CSV file (excluding the header)
total_rows=$(($(wc -l < "$csv_file")))

# Read the second line of the CSV file (excluding the header) and store it as table_name
table_name=$(sed '${NEW_LOOP}q;d' "$csv_file" | cut -d ',' -f 1)

# Check if the table_name is not empty
if [ -n "$table_name" ]; then
    # Print the table name
    echo "Table Name: $table_name"
else
    echo "Table name is empty or CSV file is not formatted correctly."
fi

# Store the total number of rows in a variable called loop_break
#loop_break=$total_rows

#echo "#DW" > "$property_file"
echo "table_name=$table_name" > "$property_file"
echo "loop_break=$total_rows" >> "$property_file"
  • 下一步是循环改造,每次增加循环值
  • set dw 转换读取 config.properties 文件并为 table_name 和总行数设置变量。
  • rw_ktr 有表输入步骤并读取表并写入为 txt 文件输出。
  • 简单的评估步骤检查循环值是否等于 csv 中的总行数,然后作业结束,这就是我编写的方式。

这符合我的要求,但我认为它没有那么好,我需要一个有效的解决方案。

sql-server pentaho kettle pentaho-spoon pentaho-data-integration
1个回答
0
投票

绝对有可能实现你想要的,但我必须知道确切的步骤才能给你100%的答案。我能做的就是向您指出其中的大多数。

在作业执行时使用变量和对每行执行选项。您可以在转换中的任何位置使用大量变量,甚至可以更改数据库连接、实例、用户和密码。您可以在循环作业中使用这些变量,有点像“对于每个数据库连接,执行此操作”。我用这种方法解决了这个案例。 如果您在“为每个输入行执行”部分遇到问题,我也有此链接可以提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.