比如:在A数据库有表血型
----
id 血型
1 A
2 B
3 AB
4 0
----
应该添o(英文o),但是添成了0(数字0)
将A中的血型转换到B
----
id 血型
1 A
2 B
3 AB
4 o
----
应该添将0装换成o,请问怎么实现?
----
id 血型
1 A
2 B
3 AB
4 0
----
应该添o(英文o),但是添成了0(数字0)
将A中的血型转换到B
----
id 血型
1 A
2 B
3 AB
4 o
----
应该添将0装换成o,请问怎么实现?
----
id 血型
1 A
2 B
3 AB
4 0
----
应该添o(英文o),但是添成了0(数字0)
将A中的血型转换到B数据库
----
id 血型
1 A
2 B
3 AB
4 o
----
应该添将0装换成o,请问怎么实现?
要设计DTS包,要定时转换,比如说夜里3:00,将A数据库中血型数据转换到B数据库中,并且将不0转换成o。
您能否按这个题目具体实现一下呢?
不能貼圖...偶就意思意思了,方法很多{sql connection} =======(transfor task)====>{sql connection}在transfor task的source中,選擇sql command,然後直接下sql,select id,case [血型] when '0' then 'o' else [血型] end as [血型]
from A.dbo.血型表--------------------------------------
或者拖2個connection分別連接A & B
然後拖一個Execute SQL Task,直接下command,
insert into B.dbo.血型表(id,[血型])
select id,case [血型] when '0' then 'o' else [血型] end as [血型]
from A.dbo.血型表
簡單來說,可以做成.bat檔,然後用你的語言(C,java什麼),去調這個.bat包.dtsrun的命令格式可以參考幫助.舉個例子,以下是調用dts_yourname,帶3個參數:
DTSRun /S %1 /E /N "dts_yourname" /A "@parm1":"8"="%2" /A "@parm2":"8"="%3" /A "@parm3":"8"="%4" /W "0"
set name=(case when name='o' or name='O' then '0'else name end)--数字'0'改为字母'o'
update t
set name=(case when name='0'then 'o' else name end)把这句SQL语句建立作业,设定好时间它会实时更新的
用DTS编程其实不是用脚本组建的概念, 因该是 开发 Custom Component
比如:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
namespace SampleTask
{
public class SampleTask : Task
{
}
}。。
这种情况可以用建立数据流,添加 OLE DB Command 组建,在sql command中设置一下。
或者直接在控制流中建立Execute SQL Task任务,直接用楼上提供的sql语句。(推荐)
在“文件”菜单中,指向“新建”,再单击“项目”,以创建一个新的 Integration Services 项目。
在“新建项目”对话框的“模板”窗格中,选择“Integration Services 项目”。
在“名称”框中,将默认名称更改为 SSIS Tutorial。或者,清除“创建解决方案的目录”复选框。
接受默认位置,或单击“浏览”,以浏览并找到要使用的文件夹。
在“项目位置”对话框中,单击文件夹,再单击“打开”。
单击“确定”。
默认情况下,将创建一个名为 “新建包.dtsx“的空包,并将该包添加到项目中。
在解决方案资源管理器工具栏中,右键单击 Package.dtsx,再单击“重命名”,将默认包重命名为 blood.dtsx。
当系统提示重命名包对象时,单击“是”。
首先添加导入数据的源
右键单击“连接管理器”区域中的任意位置,再单击“OLEDB连接”。
在“OLEDB连接编辑器”对话框的“连接管理器名称”字段中,键入 Source。
单击“浏览”。
在“配置OLE DB 连接管理器”对话框中,单击“新建”。
在“服务器名称”中,输入 . (本机)。
然后添加 a数据库 数据源
(将 . 指定为服务器名称时,连接管理器将连接到本地计算机上Microsoft SQL Server 2005 的默认实例。若要使用SQL Server 2005 的远程实例,请将localhost 替换为要连接到的服务器的名称。)
在“登录到服务器”组中,确认选择了“使用Windows 身份验证”。
在“连接到数据库”组的“选择或输入数据库名称”框中,键入或选择a数据库。
单击“测试连接”,验证指定的连接设置是否有效。
单击“确定”。同样的方法再建立一个 b数据库 的连接。 单击“控制流”选项卡。
在“工具箱”中,展开“控制流项”,并将一个数据流任务拖到“控制流”选项卡的设计图面上。
在“控制流”设计图面中,右键单击新添加的数据流任务,再单击“重命名”,将名称更改为Import blood Data。 打开“数据流”设计器,方法是双击Import blood Data 数据流任务或单击“数据流”选项卡。
在“工具箱”中,展开“数据流源”,然后将“oledb源”拖动到“数据流”选项卡的设计图面上。
在“数据流”设计图面上,右键单击新添加的“oledb源”,单击“重命名”,然后将该名称更改为a Source Data。同样的方法拖放一个oledb 目标组件 配置 导b 数据库 b destination再a Source Data 和b destination 中间 从工具箱拖放一个 oledb command 组件。 把连个组件联起来。
回到控制流中再数据流上面放置一个t-sql 语句任务,放入楼上的sql 语句。
把t-sql任务组件和数据流任务组件连接起来运行就可以了
Oracle的MINUS集合能做到```但我用的是T—SQL
已知兩表結構完全相同
6個字段請用abcdef代之
最好能用一條SQL語句實現``因為要在winForm中去填充到表裡
可用存儲過程做```
高手99999
关键字: java jacob dts 导入导出
第一步:
下载jacob
http://danadler.com/jacob/jacobBin_17.zip
解压后将dll文件放到%JAVA_HOME%\jre\bin目录下,将jar文件放到%JAVA_HOME%\jre\lib\ext目录下,不用再配置环境变量第二步:
创建dts文件
直接用sqlserver2000的导入导出工具创建一个dts任务,并保存为存储结构文件,放到比如d:\temp\dts\dts_test.dts第三步:
通过java调用dts文件执行数据导入导出
代码
package dbf;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.jacob.activeX.*;
import com.jacob.com.*;
public class ExportDts {
public void exportdbf() {
SimpleDateFormat localTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String importFileName = "D:/temp/dbf"; //这里导出的DBF要存放的路径
String DtsPath = "D:/temp/dts/dts_test.dts"; //这里是DTS文件的路径
try {
System.out.println("start:" + localTime.format(new Date()));
ActiveXComponent app = new ActiveXComponent("DTS.Package2");
Dispatch.callN(app, "LoadFromStorageFile",new Variant[] {new Variant(DtsPath),new Variant("")});
//重新设置路径
Dispatch DTSconns = Dispatch.get(app,"Connections").toDispatch();
Dispatch DTSconn = Dispatch.callN(DTSconns,"Item",new Variant[]{new Variant(2)}).toDispatch();
Dispatch.put(DTSconn,"DataSource",new String(importFileName));
//执行
Dispatch.callN(app, "Execute", new Variant[] {});
//得到执行的结果
Dispatch DTSsteps = Dispatch.get(app,"Steps").toDispatch();
Dispatch DTSstep = Dispatch.callN(DTSsteps,"Item",new Variant[]{new Variant(1)}).toDispatch();
Variant ResultValue = Dispatch.get(DTSstep,"ExecutionResult");
if(ResultValue.toInt()==0){
System.out.println("导出成功");
}else{
System.out.println("导出失败");
}
System.out.println("end:" + localTime.format(new Date()));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}