diff --git a/tcp_client/config.toml b/tcp_client/config.toml index 3a434ee..6a22941 100644 --- a/tcp_client/config.toml +++ b/tcp_client/config.toml @@ -1,6 +1,6 @@ [server] -#host = "10.180.4.88" -host = "127.0.0.1" +host = "10.180.4.88" +#host = "127.0.0.1" port = 9090 @@ -21,6 +21,7 @@ password = "Auseft@2025qwer" # 要同步的表配置 [[tables]] name = "hy_record" -query = "SELECT * FROM hy_record where hy_code= 'R25041402C'" +query = "SELECT * FROM hy_record " incremental = false # 是否增量同步 key_field = "UpdateTime" # 增量同步的时间字段 + diff --git a/tcp_client/src/db.rs b/tcp_client/src/db.rs index 96756f4..59747e0 100644 --- a/tcp_client/src/db.rs +++ b/tcp_client/src/db.rs @@ -91,110 +91,88 @@ impl Database { pub fn format_row_as_json(row: &Row, table_name: &str) -> serde_json::Value { let mut map = serde_json::Map::new(); - - // 添加 table_name 字段 map.insert("table_name".to_string(), serde_json::Value::String(table_name.to_string())); for (i, column) in row.columns().iter().enumerate() { let name = column.name(); let type_name = column.type_().name(); - println!("字段 {} 的类型是: {}", name, type_name); + // println!("字段 {} 的类型是: {}", name, type_name); let value = match type_name { - "int2" | "int4" | "int8" => { - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取整数: {} = {}", name, val); - serde_json::Value::Number(serde_json::Number::from(val)) - }, - Ok(None) => { - println!("字段 {} 为 null", name); - serde_json::Value::Null - }, - Err(e) => { - println!("读取整数失败 {}: {}", name, e); - // 尝试其他整数类型 - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取 i32: {} = {}", name, val); - serde_json::Value::Number(serde_json::Number::from(val)) - }, - Ok(None) => { - println!("字段 {} 为 null", name); - serde_json::Value::Null - }, - Err(_) => { - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取 i16: {} = {}", name, val); - serde_json::Value::Number(serde_json::Number::from(val)) - }, - Ok(None) => { - println!("字段 {} 为 null", name); - serde_json::Value::Null - }, - Err(_) => serde_json::Value::Null - } - } - } - } - } + "int2" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 int2: {} = {}", name, val); + serde_json::Value::Number(serde_json::Number::from(val)) + }, + _ => serde_json::Value::Null }, - "numeric" | "float4" | "float8" => { - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取浮点数: {} = {}", name, val); - match serde_json::Number::from_f64(val) { - Some(n) => serde_json::Value::Number(n), - None => serde_json::Value::Null - } - }, - Ok(None) => { - println!("字段 {} 为 null", name); - serde_json::Value::Null - }, - Err(e) => { - println!("读取浮点数失败 {}: {}", name, e); - serde_json::Value::Null + "int4" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 int4: {} = {}", name, val); + serde_json::Value::Number(serde_json::Number::from(val)) + }, + _ => serde_json::Value::Null + }, + "int8" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 int8: {} = {}", name, val); + serde_json::Value::Number(serde_json::Number::from(val)) + }, + _ => serde_json::Value::Null + }, + "numeric" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 numeric: {} = {}", name, val); + match serde_json::Number::from_f64(val) { + Some(n) => serde_json::Value::Number(n), + None => serde_json::Value::String(val.to_string()) } - } + }, + _ => serde_json::Value::Null }, - "text" | "varchar" => { - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取字符串: {} = {}", name, val); - serde_json::Value::String(val) - }, - _ => { - println!("字段 {} 为 null", name); - serde_json::Value::Null + "float4" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 float4: {} = {}", name, val); + match serde_json::Number::from_f64(val as f64) { + Some(n) => serde_json::Value::Number(n), + None => serde_json::Value::String(val.to_string()) } - } + }, + _ => serde_json::Value::Null }, - "bool" => { - match row.try_get::<_, Option>(i) { - Ok(Some(val)) => { - println!("成功读取布尔值: {} = {}", name, val); - serde_json::Value::String(if val { "1".to_string() } else { "0".to_string() }) - }, - _ => { - println!("字段 {} 为 null", name); - serde_json::Value::Null + "float8" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取 float8: {} = {}", name, val); + match serde_json::Number::from_f64(val) { + Some(n) => serde_json::Value::Number(n), + None => serde_json::Value::String(val.to_string()) } - } + }, + _ => serde_json::Value::Null + }, + "text" | "varchar" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取字符串: {} = {}", name, val); + serde_json::Value::String(val) + }, + _ => serde_json::Value::Null + }, + "bool" => match row.try_get::<_, Option>(i) { + Ok(Some(val)) => { + // println!("成功读取布尔值: {} = {}", name, val); + serde_json::Value::String(if val { "1".to_string() } else { "0".to_string() }) + }, + _ => serde_json::Value::Null }, "timestamp" | "timestamptz" | "date" => { - println!("处理时间字段: {}", name); + // println!("处理时间字段: {}", name); match row.try_get::<_, Option>(i) { Ok(Some(dt)) => { let formatted = dt.format("%Y-%m-%d %H:%M:%S").to_string(); - println!("成功读取本地时间: {} = {}", name, formatted); + // println!("成功读取本地时间: {} = {}", name, formatted); serde_json::Value::String(formatted) }, - _ => { - println!("字段 {} 为 null", name); - serde_json::Value::Null - } + _ => serde_json::Value::Null } }, _ => { diff --git a/tcp_client/src/main.rs b/tcp_client/src/main.rs index 4c003f8..c24ccaf 100644 --- a/tcp_client/src/main.rs +++ b/tcp_client/src/main.rs @@ -115,7 +115,7 @@ async fn main() { match stream.read_exact(&mut buffer) { Ok(_) => { let bit = buffer[0]; - println!("接收到比特值: {}", bit); + // println!("接收到比特值: {}", bit); if(bit==255){ println!("接收成功"); break;