文档章节

Data loader 对某个对象定时备份

在山的那边
 在山的那边
发布于 2017/08/12 16:49
字数 1264
阅读 165
收藏 3
点赞 0
评论 1

最近项目遇到一个需求是对某个对象每天备份。首先想到是SFDC标准功能备份,无奈,标准功能最小时间为周。客户需要的是每天备份。那只能借助其它工具,目前使用过的有jitterbit 需要安装客户端,可视化配置,在本地配置好后推送到云端,需要注册帐号。可以连数据库,CSV等等,有免费版,官网上有不同版本对比和限制。由于目前只有一个对象需要备份以及客户那边涉及到审查就没有采用。另一个就是SFDC自家的Data loader,查了一下在windows下能借助脚本实现备份,于是就开始折腾也为后面学习Data loader的代码作铺垫。 ** 如果你有什么好的方法和工具欢迎留言**。

一 Data loader 命令行

1. Windows的系统要求

需要为 Data Loader Windows 签名。要使用 Data Loader for Windows,您需要:

  1. Microsoft® Windows® 7、Windows® 8 或 Windows® 10
  2. 120 MB 可用磁盘空间
  3. 256 MB 可用内存
  4. Java JRE 1.8(32 位)

2. 通过命令行获取密码

  1. 通过命令行进入到data loader安装目录

  2. encrypt.bat -g -字符串 (字符串可以是任意的) 输入图片说明

  3. 执行后得到一串字符 将该字符串复制到一个文本中保存为key.txt

  4. encrypt.bat –e 密码 "key.txt" 将密码加密 输入图片说明

  5. 创建mapping文件 xx=xx 形式,文件名为Inventory.sdl 左侧是数据库名,右侧是别名(** PS:如果别名用中文,最后生成的文件是乱码**)

    输入图片说明

  6. 修改data loader 配置文件(这里是导出,关于导入可在SFDC 文档中心找到)

    	<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    

<beans> <bean id="csvInventory" class="com.salesforce.dataloader.process.ProcessRunner" singleton="false"> <description>导出库存</description> <property name="name" value="csvInventory"/> <property name="configOverrideMap"> <map> <entry key="sfdc.debugMessages" value="false"/> <entry key="sfdc.debugMessagesFile" value=""/> <entry key="sfdc.endpoint" value="https://test.salesforce.com 按实际情况修改"/> <entry key="sfdc.username" value="(用户名)"/> <entry key="sfdc.password" value="(4步的加密密码)"/> <entry key="process.encryptionKeyFile" value="key.txt"/> <entry key="sfdc.timeoutSecs" value="600"/> <entry key="sfdc.loadBatchSize" value="200"/> <entry key="sfdc.entity" value="Account"/> <entry key="sfdc.extractionRequestSize" value="500"/> <entry key="sfdc.extractionSOQL" value=" **SOQL**"/> <entry key="process.operation" value="extract"/> <entry key="process.mappingFile" value="Inventory.sdl"/> <entry key="dataAccess.type" value="csvWrite"/> <entry key="dataAccess.name" value="Inventory.csv(备件文件名)"/> </map> </property> </bean> </beans>

```
  1. process.bat "process-conf.xml所在的目录" csvInventory 运行命令

#二 Data loader JRE 启动文件修改 为了便于移植到其它PC上,将JRE 内置到目录中,将dataloader 没有用的文件删除,修改自带的配置文件。

  1. 新建一个文件夹,到JDK所在的目录将,JRE copy 到目录中 输入图片说明

  2. 将下图中的文件从dataloader中copy到文件夹中 输入图片说明

  3. 修改 process.bat

        ::不依赖系统的JDK 设置Java的环境变量为目录中的JRE %cd%为当前目录
        set path=%cd%\jre\bin
        ::获得操作名的参数
        set PROCESS_OPTION=
        if not [%2]==[] set PROCESS_OPTION=process.name=%2
    
        ::调用datalaoder
        "%path%\java" -cp dataloader-37.0.0-uber.jar -Dsalesforce.config.dir=%1 com.salesforce.dataloader.process.ProcessRunner %PROCESS_OPTION%
    
    
  4. 修改encrypt.bat

::不依赖系统的JDK 设置环境Java的环境变量为目录中的JRE set path=%cd%\jre\bin ::调用datalaoder "%path%\java" -cp dataloader-37.0.0-uber.jar com.salesforce.dataloader.security.EncryptionUtil %* ```

#三 利用bat 将生成的文件移到其它目录 由于生成的文件名在配置中是写死的,这样一来就会被覆,可以利用bat 来移动文件,不会这个玩意全靠度娘 ##1. 新建一个dataloader-run.bat 这个是启动备份的入口命令

::获得bat所有的目录路径
set batpath=%~dp0
process.bat %batpath% csvInventory

##2. 新建一个movefile.bat

::获取时间 20170811122010 年月日时分秒
set dd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
::当前bat所在的目录
set batpath=%~dp0
::设置移动到那个目录下
set targetpath=Inventory\data
::绝对路径
set target=%batpath%%targetpath%
::dataloader产生的日志文件也一并移到指定的目录
set log=%batpath%Inventory\status
::如果目录不存在则自动创建
if not exist Inventory (
	md Inventory
	cd Inventory
	md data
	md status
)
::定位到产生的备份的文件目录下
cd InventoryTemp/data
if exist Inventory.csv (
        ::重命名生成的文件
	ren Inventory.csv Inventory_%dd%.csv
        ::移动到指定目录
	move Inventory_%dd%.csv %target%
) 
::定位到日志目录,将日志移到指定目录
cd ../status
move *.csv %log%

目录如下:

输入图片说明

#四 设置windows计划任务步骤

  1. 打开控制面板,查看方式选择大图标,打开管理工具 输入图片说明

  2. 打开管理工具,选中任务计划程序,双击打开 输入图片说明

  3. 点击创建任务,库存每日备份 a. 常规中输入名称 输入图片说明

    b. 新建触发器设置时间,每天XX时XX分 [输入图片说明

    c. 设置程序,如下图,设置好后点击保存 输入图片说明

  4. 点击创建任务,将生成的文件移到指定目录 a. 常规中输入名称 输入图片说明

    b. 新建触发器设置时间,每天XX时XX分 输入图片说明

    c. 设置程序,如下图,设置好后点击保存 输入图片说明

  5. 备份的文件最终会存在\Inventory\data 输入图片说明 文件名为Inventory_年月日时分秒.csv

    输入图片说明 Inventory\data\status 为日志文件

    输入图片说明

© 著作权归作者所有

共有 人打赏支持
在山的那边

在山的那边

粉丝 12
博文 27
码字总数 20725
作品 0
长宁
程序员
加载中

评论(1)

沧海_Sea
沧海_Sea
还是Linux简单
公有云镜像模版的创建

系统层级模版约束 序号 分类 约束和规定 1 操作系统分区 分区比例保持现有生产分区比例不变 总分区默认初始大小 100G 【/: 5G】 【/data:60G】 【/home:8G】 【/var:8G】 【/usr: 16G】...

运维技术 ⋅ 2014/04/08 ⋅ 0

个人收集一些程序员面试题目(二) 一起分享

ORACLE 面试问题-技术篇 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用...

吕坤 ⋅ 2011/03/22 ⋅ 0

ClassLoader原理

JVM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader)。 一. ClassLoader基本概念 1.ClassLoader分类 类装载器是用来把类(class)装载...

markGao ⋅ 2013/12/11 ⋅ 0

linux定时备份mysql数据库

利用crontab,系统每天定时备份mysql数据库 【内容提要】利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 利用系统crontab来定时执行备份文件,按日期对备份...

xiahuawuyu ⋅ 2012/05/07 ⋅ 0

下厨房 基于 JuiceFS 的 MySQL 备份实践

今天这篇文章来自 ushuz ([GitHub]https://github.com/ushuz),他 2014 年加入下厨房,目前负责下厨房平台和基础设施方面的工作。 下厨房是国内最大的专注于家庭美食领域的社区,以菜谱和作品...

ACMUG ⋅ 04/23 ⋅ 0

windows mysql 自动备份的几种方法

1、复制date文件夹备份 ============================ 假想环境: MySQL 安装位置:C:MySQL 论坛数据库名称为:bbs 数据库备份目的地:C:dbbak ============================ 新建dbbak.bat...

lisq6151 ⋅ 2016/03/14 ⋅ 0

利用Crontab为Linux定时备份Mysql数据库

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 1、创建保存备份文件的路径/mysqldata mkdir /mysqldata 2、创建/usr/sbin/bakmysql文件 vi /usr/sbin/bak...

zt371 ⋅ 2009/05/07 ⋅ 0

Oracle数据库日常维护

在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。 一、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_...

六六木木 ⋅ 2013/09/24 ⋅ 0

如何在生产环境下实现每天自动备份mysql数据库

1、描述 我相信很多朋友在工作都都会有这种需求,老板或领导让你每天都要备份mysql数据库,你该如何实现呢,是每天到一定的时间在服务器上敲一遍mysql的备份命令,还是想写个脚本,定时定点的...

甘兵 ⋅ 2017/12/22 ⋅ 0

某android平板项目开发笔记---计划任务备份

前言: 很久,都没更新过这个系列了…因为,除了图表以外,然后就是数据库了,调试了一个多星期的Ormlite数据库,在最新版本中(orm 4.3.3)发现了几个比较严重的bug(例如,查找id的时候无法使用Long类...

打杂程序猿 ⋅ 2012/02/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 17分钟前 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 22分钟前 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 31分钟前 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 31分钟前 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 32分钟前 ⋅ 0

React Native & Weex 区别

JS引擎 Weex使用V8, React native使用JSCore JS开发框架 ( Js Framework ) Weex基于vue.js(2W+ star)。小巧轻量的前端开发框架,组件化,数据绑定,2.0引入virtual dom。 ReactNative使用...

东东笔记 ⋅ 40分钟前 ⋅ 1

UIkit 分页组件动态加载简单实现

1. 问题描述 使用过UIkit分页组件的都清楚,UIkit的分页不能动态刷新数据,也就是不能在点击下一页的时候,动态从后台加载数据,并且刷新页数以及该页数上的数据,下面是一个简单实现,没有做...

影狼 ⋅ 41分钟前 ⋅ 0

Mobx入门之三:Provider && inject

上一节中<App/>组件传递状态temperatures给children -- <TemperatureInput />,如果组建是一个tree, 那么属性的传递则会非常繁琐。redux使用Provider给子组件提供store, connect将子组件和s...

pengqinmm ⋅ 43分钟前 ⋅ 0

魔兽世界 7.0版本 S23/S24/S25全职业普通+精锐套

  死亡骑士   (联盟)   (部落)   (精锐)   恶魔猎手   (联盟)   (部落)   (精锐)   德鲁伊   (联盟)   (部落)   (精锐)   猎人   (联盟) ...

wangchen1999 ⋅ 50分钟前 ⋅ 0

maven顶级pom和子pom的版本号批量修改

当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。还好,m...

ArlenXu ⋅ 59分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部