为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Windows
【CPU】:
【问题描述】*:fldr_Bind_Columns_ex绑定日期类型格式串yyyy-MM-dd HH:mm:ss正常,但fldr_Send_Rows_ex操作不成功,代码如下:
public class fldrTestUtils {
public static void main(String[] args)
{
Instance instance = new Instance();
int threadNum = 1;
fldrTestUtils floder = new fldrTestUtils();
String tableName = "TEST_ADM.FLDR_TEST";
//使用当前类中自定义的init函数,设置属性信息,并初始化当前快速装载实例
boolean success = floder.init(instance, threadNum, tableName);
//若快速装载实例初始化成功,则直接指定待装载数据,并按行进行数据装载
if(success){
try{
String c2[] = {"a1","a12"}; //字符串类型数据
int c2_ind[] = {2,3};
byte[][] byteArray2 = new byte[2][];
for(int i = 0; i < 2; i++){
byteArray2[i] = c2[i].getBytes();
}
String c1[] = {"2025-11-24 20:00:00","2025-11-25 23:00:00"};
int c1_ind[] = {19,19};
byte[][] byteArray1 = new byte[2][];
for(int i = 0; i < 2; i++){
byteArray1[i] = c1[i].getBytes();
}
//按行装载数据
//绑定数值类型数据,data参数传入int数组c1
boolean b = instance.fldr_Bind_Columns_ex(1, DataTypes.FLDR_C_CHAR, null, byteArray2, 54, c2_ind, 1);
//绑定字符串类型数据,data参数传入byte数组byteArray2
boolean b1 = instance.fldr_Bind_Columns_ex(2, DataTypes.FLDR_C_CHAR, "yyyy-MM-dd HH:mm:ss", byteArray1, 54, c1_ind, 1);
boolean b2 = instance.fldr_Send_Rows_ex(2, 1, 1);
System.out.println(b2);
}catch(Exception e){
e.printStackTrace();
}
}
//若快速装载实例初始化失败,则打印错误信息,并释放快速装载实例
if(!success){
String message = instance.getErrorMsg();
System.out.println("出错信息:" + message);
instance.free();
}
//快速装载完成,打印实际插入的行数,并释放快速装载实例
else{
instance.finish();
// 返回实际插入的行数
long rowHaveCopied = Long.parseLong(instance.getAttribute(Properties.FLDR_ATTR_COMMIT_ROWS));
System.out.println("已复制行数:" + rowHaveCopied);
instance.uninitialize();
instance.free();
}
}
/自定义init函数,设置属性信息,并初始化当前快速装载实例/
public boolean init(Instance instance, int threadNum, String tableName)
{
// 分配句柄
instance.allocInstance();
// 设置必要的属性信息
String host = "XX.XX.XX.XXX";
String port = "5236";
String userName = "TEST_ADM";
String password = "XXXXXXXX";
instance.setAttribute(Properties.FLDR_ATTR_SERVER, host);
instance.setAttribute(Properties.FLDR_ATTR_PORT, port);
instance.setAttribute(Properties.FLDR_ATTR_UID, userName);
instance.setAttribute(Properties.FLDR_ATTR_PWD, password);
// 其余属性用户均可根据实际情况选择性设置
// 设置编码
//instance.setAttribute(Properties.FLDR_ATTR_DATA_CHAR_SET, System.getProperty("file.encoding"));
// 设置是否插入自增列
//instance.setAttribute(Properties.FLDR_ATTR_SET_INDENTITY, "0");
// fldr task线程默认为cpu个数,如果客户端线程数大于cpu个数,则必须设置该参数
//instance.setAttribute(Properties.FLDR_ATTR_TASK_THREAD_NUM, String.valueOf(threadNum));
// 记录出错的信息
String dmHome = System.getProperty("DM_HOME");
if(dmHome != null && !dmHome.equals("")){
if(dmHome.endsWith("/") || dmHome.endsWith("\")){
instance.setAttribute(Properties.FLDR_ATTR_BAD_FILE, dmHome + "BADFILE_1.TXT");
}else{
instance.setAttribute(Properties.FLDR_ATTR_BAD_FILE, dmHome + File.separator + "BADFILE_1.TXT");
}
}
// 装载日志
if (dmHome != null && !dmHome.equals("")){
if (dmHome.endsWith("/") || dmHome.endsWith("\")){
instance.setAttribute(Properties.FLDR_ATTR_LOG_FILE, dmHome + "FLDRLOG_1.TXT");
}else{
instance.setAttribute(Properties.FLDR_ATTR_LOG_FILE, dmHome + File.separator + "FLDRLOG_1.TXT");
}
}
//初始化当前快速装载实例
boolean success = instance.initializeInstance(null, null, null, tableName);
return success;
}
}
