kettle数据导出到另一个数据库,必须先建表结构吗

 我来答
刺友互
高粉答主

2020-02-18 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:74.2万
展开全部

kettle数据导出到另一个数据库,不需要先建表结构,导出方法为:

1、打开SQL Database Studio。

2、点击展开数据库连接和数据库。

3、右击要导出数据的表,然后选择【export wizard】。

4、在【choose source】中选择【database】,然后点击【next】。

5、选择目标为database,然后点击【next】。

6、此时显示执行结果。

7、打开目标库,可以看到最终导出数据。

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
夜独行孤单
推荐于2017-12-15 · TA获得超过3460个赞
知道大有可为答主
回答量:2803
采纳率:82%
帮助的人:648万
展开全部
需求:
1.你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle。
2.你是否还在使用kettle重复的画着:表输入-表输出、创建表,而烦恼。

下面为你实现了一套通用的数据库迁移流程。

技术引导:
实现之初,在kettle提供的例子中找到了一个类似的(samples\jobs\process all tables)。
通过相关改造,终于达到目标。

实现过程解剖:
整套流程分为:2个job,4个trans。
使用到的Trans插件:表输入、字段选择、复制记录到结果、从结果获取记录、设置变量、自定义java脚本、表输出。
1.大job。

2.要迁移的源库表名称获取,并设置到结果集,为下面的job使用。

3.配置子job为前面的每一条记录(即每个表)执行一次该子job

4.下面是子job。

5.获取记录中的表名称,并设置为到变量。

6.读取当前表的结果信息,并在目标库中创建表(这个是难点)。

因为只需要获取抓取要抽取表的结构信息,故在sql后面加上 where 1=2。

下面代码是创建目标库表。

Java代码
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
// First, get a row from the default input hop
//
Object[] r = getRow();

org.pentaho.di.core.database.DatabaseMeta dbmeta = null;

java.util.List list = getTrans().getRepository().readDatabases();//3.x中获取资源库的所有数据库连接信息用getDatabases();

if(list != null && !list.isEmpty())
{
for(int i=0;i<list.size();i++)
{
dbmeta = (org.pentaho.di.core.database.DatabaseMeta)list.get(i);
//下面是目标库的数据库连接,大家可根据需要修改
if("mysql_test".equalsIgnoreCase(dbmeta.getName()))
{
break;
}
}
}

if(dbmeta!=null)
{
org.pentaho.di.core.database.Database db=new org.pentaho.di.core.database.Database(dbmeta);

try
{
db.connect();

String tablename = getVariable("TABLENAME");

logBasic("开始创建表:" + tablename);

if(tablename!=null && tablename.trim().length()>0)
{
String sql = db.getDDL(tablename, data.inputRowMeta);//${TABLENAME}

db.execStatement(sql.replace(";", ""));

logBasic(sql);
}
}
catch(Exception e)
{
logError("创建表出现异常",e);

}finally{
db.disconnect();
}
}
return false;
}

7.表数据迁移。

8.差不多就行了,本人使用mysql到mysql、oracle的测试是没有问题的不过在测试过程中,发现源表若存在有blob的表,会有问题,可能是由于表输出没有指定字段的原因,具体解决办法,也没有去多想,以后有时间在完善把。

上面的整套流程的是在kettle4.3下完成的,附件里面可下载完整流程。下载地址如下:
http://download.csdn.net/detail/feng19821209/4846668
原文地址:http://ainidehsj.iteye.com/blog/1735434
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
族诺子悠
2016-04-19 · 知道合伙人软件行家
族诺子悠
知道合伙人软件行家
采纳数:1093 获赞数:84147
毕业于河南理工大学计算机科学与技术学院,对品牌推广,app运营比较擅长

向TA提问 私信TA
展开全部
一般都是先建立结构,再导入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式