官网下载地址:Cursor - The AI Code Editor
一个自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro功能的小工具
第一步: 下载下 Cursor 后,安装完成后不启动做任何配置。
官网下载地址:Cursor - The AI Code Editor
一个自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro功能的小工具
第一步: 下载下 Cursor 后,安装完成后不启动做任何配置。
import torch
import numpy as np
pip install langchain
我直接问了 ChatGPT 它给了我回答
获取 ChatGPT 的 API 密钥需要访问 OpenAI 的官网 并注册一个账户。以下是具体步骤:
注册或登录 OpenAI 账户:前往 OpenAI 平台进行注册,或者直接登录。
创建 API Key:
保存和保护密钥:
使用 API Key:
requests
库来发送 HTTP 请求,或者使用 OpenAI 提供的官方 Python 库进行接口交互。package com.boy.common.utils;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.ProgressNullMonitorListener;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.parameters.UnknownParamException;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
import java.util.Map;
import java.util.Set;
public class KettleUtils {
private static final Logger logger = LoggerFactory.getLogger(KettleUtils.class);
public static KettleDatabaseRepository repositoryConnection() {
/** 初始化 */
try {
KettleEnvironment.init();
} catch (KettleException ex) {
logger.error(ex.getMessage());
ex.printStackTrace();
}
/**
* Construct a new database connections. Note that not all these parameters are not always mandatory.
*
* @param name
* The database name
* @param type
* The type of database
* @param access
* The type of database access
* @param host
* The hostname or IP address
* @param db
* The database name
* @param port
* The port on which the database listens.
* @param user
* The username
* @param pass
* The password
*/
DatabaseMeta databaseMeta = new DatabaseMeta("kettle-repo", "MySQL", "Native(JDBC)", "127.0.0.1", "kettle-repo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai", "3306", "root", "root");
/** 数据库形式的资源库元对象 */
KettleDatabaseRepositoryMeta repositoryMeta = new KettleDatabaseRepositoryMeta();
repositoryMeta.setConnection(databaseMeta);
/** 数据库形式的资源库对象 */
KettleDatabaseRepository repository = new KettleDatabaseRepository();
/** 用资源库元对象初始化资源库对象 */
repository.init(repositoryMeta);
/** 连接到资源库:默认的连接资源库的用户名及密码 */
try {
repository.connect("admin", "admin");
} catch (KettleException e) {
e.printStackTrace();
}
if (repository.isConnected()) {
System.out.println("@>>>>>>>>> Connection Success!");
return repository;
} else {
System.out.println("@>>>>>>>>> Connection Failed!");
return null;
}
}
/**
* 执行转换
*
* @param repository kettle仓库对象
* @param directory 转换存储路径
* @param transName 转换名称
* @param params 转换参数
*/
public static void runTrans(KettleDatabaseRepository repository, String directory, String transName, Map<String, String> params) {
try {
/** 根据指定的字符串路径 找到目录 */
RepositoryDirectoryInterface repDirectory = repository.findDirectory(directory);
TransMeta transMeta = repository.loadTransformation(repository.getTransformationID(transName, repDirectory), null);
// 设置参数
if (!ObjectUtils.isEmpty(params)) {
Set<Map.Entry<String, String>> entries = params.entrySet();
entries.forEach(item -> {
String key = item.getKey();
String value = item.getValue();
try {
transMeta.setParameterValue(key, value);
} catch (UnknownParamException e) {
e.printStackTrace();
}
});
}
// transMeta.setParameterValue("", "");
Trans trans = new Trans(transMeta);
/** 执行转换 */
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
System.out.println("有异常");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void runJobs(KettleDatabaseRepository repository, String directory, String jobName, Map<String, String> params) {
try {
/** 根据指定的字符串路径 找到目录 */
RepositoryDirectoryInterface repDirectory = repository.findDirectory(directory);
JobMeta jobMeta = repository.loadJob(jobName, repDirectory, new ProgressNullMonitorListener(), null);
Job job = new Job(repository, jobMeta);
// 向Job脚本传递参数, 脚本中获取参数值:${参数名}
if (!ObjectUtils.isEmpty(params)) {
Set<Map.Entry<String, String>> entries = params.entrySet();
entries.forEach(item -> {
String key = item.getKey();
String value = item.getValue();
job.setVariable(key, value);
});
}
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new Exception("运行Kettle Job任务时发生错误!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
KettleDatabaseRepository repository = repositoryConnection();
/**
* @param repository kettle仓库对象
* @param directory 转换存储路径
* @param transName || jobName 转换/任务名称
* @param params 转换参数
*/
// runTrans(repository, "/Jobs", "DB2Excel2", null);
runJobs(repository, "/Jobs", "DB2Excel", null);
}
}
当使用Kettle导入数据到数据表时,由于使用的是MYSQL,所以自然而然想到使用增加序列
对象去获取一个Id,但是经过测试这种方式非常慢。
将以上 分布式Id生成器 文章的代码打包成jar
包,放到kettle/lib
文件夹下。假设包名、类名:com.ibi.ptd.aps.core.utils.SnowflakeKeyGenerator.java
参考文章: https://blog.csdn.net/weixin_42342164/article/details/124782267
https://gitee.com/snowlee-ding/springboot-integration-kettle9/tree/master
windows安装很方便,下载一个jdk。下载下软件开即可。
找起来还挺复杂
社区版官网下载地址Pentaho Community Edition Download (hitachivantara.com) 打开界面点击 Download ,向下滚动选择版本