当前位置: 首页 > news >正文

宣威网站建设温州seo外包公司

宣威网站建设,温州seo外包公司,专门做养老院的网站,大题小做网站需求 需要实现将Excel中的数字类型的单元格像数据库中字符串类型的字段中推送 问题原因 Seatunnel在读取字段类型的时候都是使用强转的形式去获取数据的 假如说数据类型不一样的话直接强转就会报错 修改位置 org/apache/seatunnel/api/table/type/SeaTunnelRow.java org…

需求

需要实现将Excel中的数字类型的单元格像数据库中字符串类型的字段中推送

问题原因

Seatunnel在读取字段类型的时候都是使用强转的形式去获取数据的
假如说数据类型不一样的话直接强转就会报错

修改位置

org/apache/seatunnel/api/table/type/SeaTunnelRow.java
在这里插入图片描述

org/apache/seatunnel/connectors/seatunnel/jdbc/internal/converter/AbstractJdbcRowConverter.java
在这里插入图片描述

修改的代码

    @Overridepublic PreparedStatement toExternal(TableSchema tableSchema, SeaTunnelRow row, PreparedStatement statement)throws SQLException {SeaTunnelRowType rowType = tableSchema.toPhysicalRowDataType();for (int fieldIndex = 0; fieldIndex < rowType.getTotalFields(); fieldIndex++) {SeaTunnelDataType<?> seaTunnelDataType = rowType.getFieldType(fieldIndex);int statementIndex = fieldIndex + 1;Object fieldValue = row.getField(fieldIndex);if (fieldValue == null) {statement.setObject(statementIndex, null);continue;}switch (seaTunnelDataType.getSqlType()) {case STRING://TODO wxt//regiontry{//直接类型强转会出问题  比如double类型就不能转成String// 可以使用下面的toString解决这种类型问题statement.setString(statementIndex, (String) row.getField(fieldIndex));}catch (Exception e){statement.setString(statementIndex,  row.getField(fieldIndex).toString());}//endregionbreak;case BOOLEAN:statement.setBoolean(statementIndex, (Boolean) row.getField(fieldIndex));break;case TINYINT:statement.setByte(statementIndex, (Byte) row.getField(fieldIndex));break;case SMALLINT:statement.setShort(statementIndex, (Short) row.getField(fieldIndex));break;case INT:statement.setInt(statementIndex, (Integer) row.getField(fieldIndex));break;case BIGINT:statement.setLong(statementIndex, (Long) row.getField(fieldIndex));break;case FLOAT:statement.setFloat(statementIndex, (Float) row.getField(fieldIndex));break;case DOUBLE:statement.setDouble(statementIndex, (Double) row.getField(fieldIndex));break;case DECIMAL:statement.setBigDecimal(statementIndex, (BigDecimal) row.getField(fieldIndex));break;case DATE:LocalDate localDate = (LocalDate) row.getField(fieldIndex);statement.setDate(statementIndex, java.sql.Date.valueOf(localDate));break;case TIME:writeTime(statement, statementIndex, (LocalTime) row.getField(fieldIndex));break;case TIMESTAMP:LocalDateTime localDateTime = (LocalDateTime) row.getField(fieldIndex);statement.setTimestamp(statementIndex, java.sql.Timestamp.valueOf(localDateTime));break;case BYTES:statement.setBytes(statementIndex, (byte[]) row.getField(fieldIndex));break;case NULL:statement.setNull(statementIndex, java.sql.Types.NULL);break;case ARRAY:Object[] array = (Object[]) row.getField(fieldIndex);if (array == null) {statement.setNull(statementIndex, java.sql.Types.ARRAY);break;}statement.setObject(statementIndex, array);break;case MAP:case ROW:default:throw new JdbcConnectorException(CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,"Unexpected value: " + seaTunnelDataType);}}return statement;}
    private int getBytesForValue(Object v, SeaTunnelDataType<?> dataType) {if (v == null) {return 0;}SqlType sqlType = dataType.getSqlType();switch (sqlType) {case STRING://region//TODO 避免强转出现问题try{return ((String) v).length();}catch (Exception e){return ( v.toString()).length();}//endregioncase BOOLEAN:case TINYINT:return 1;case SMALLINT:return 2;case INT:case FLOAT:return 4;case BIGINT:case DOUBLE:return 8;case DECIMAL:return 36;case NULL:return 0;case BYTES:return ((byte[]) v).length;case DATE:return 24;case TIME:return 12;case TIMESTAMP:return 48;case ARRAY:return getBytesForArray(v, ((ArrayType) dataType).getElementType());case MAP:int size = 0;MapType<?, ?> mapType = ((MapType<?, ?>) dataType);for (Map.Entry<?, ?> entry : ((Map<?, ?>) v).entrySet()) {size +=getBytesForValue(entry.getKey(), mapType.getKeyType())+ getBytesForValue(entry.getValue(), mapType.getValueType());}return size;case ROW:int rowSize = 0;SeaTunnelRowType rowType = ((SeaTunnelRowType) dataType);SeaTunnelDataType<?>[] types = rowType.getFieldTypes();SeaTunnelRow row = (SeaTunnelRow) v;for (int i = 0; i < types.length; i++) {rowSize += getBytesForValue(row.fields[i], types[i]);}return rowSize;default:throw new UnsupportedOperationException("Unsupported type: " + sqlType);}}

如何源码打包

用maven插件打包就行
打完包的话东西在dist下面 如截图所示
在这里插入图片描述


文章转载自:
http://dinncopravity.knnc.cn
http://dinncoecogeographic.knnc.cn
http://dinncowateriness.knnc.cn
http://dinncoyippie.knnc.cn
http://dinncoanglophobe.knnc.cn
http://dinncosawback.knnc.cn
http://dinncomuss.knnc.cn
http://dinnconomocracy.knnc.cn
http://dinncocamelopardalis.knnc.cn
http://dinncogoluptious.knnc.cn
http://dinnconetman.knnc.cn
http://dinncomadia.knnc.cn
http://dinncocreek.knnc.cn
http://dinncobaccalaureate.knnc.cn
http://dinncoajuga.knnc.cn
http://dinncotrove.knnc.cn
http://dinncoalphonse.knnc.cn
http://dinncotownspeople.knnc.cn
http://dinncounwearied.knnc.cn
http://dinncoovid.knnc.cn
http://dinncoundercutter.knnc.cn
http://dinncointernuncial.knnc.cn
http://dinncocephalothorax.knnc.cn
http://dinncoplaybroker.knnc.cn
http://dinncotown.knnc.cn
http://dinncoaccentuation.knnc.cn
http://dinncogrume.knnc.cn
http://dinncothermantidote.knnc.cn
http://dinncoenhearten.knnc.cn
http://dinncoflimsy.knnc.cn
http://dinncochristology.knnc.cn
http://dinncounmet.knnc.cn
http://dinncokcia.knnc.cn
http://dinncohomoeothermal.knnc.cn
http://dinncopredetermine.knnc.cn
http://dinncosomaliland.knnc.cn
http://dinncojuniper.knnc.cn
http://dinncocinquefoil.knnc.cn
http://dinncoinvisibly.knnc.cn
http://dinncooutage.knnc.cn
http://dinncodistil.knnc.cn
http://dinncodhaka.knnc.cn
http://dinncounderemphasize.knnc.cn
http://dinncodeintegro.knnc.cn
http://dinncotopnotch.knnc.cn
http://dinncobother.knnc.cn
http://dinncojest.knnc.cn
http://dinncowildflower.knnc.cn
http://dinncosuricate.knnc.cn
http://dinncolike.knnc.cn
http://dinncoreluctant.knnc.cn
http://dinncoimperfectly.knnc.cn
http://dinncotunicle.knnc.cn
http://dinncoanalyzed.knnc.cn
http://dinncoschlimazel.knnc.cn
http://dinncoexculpation.knnc.cn
http://dinncotcb.knnc.cn
http://dinncoselectorate.knnc.cn
http://dinncoochone.knnc.cn
http://dinncocodetermine.knnc.cn
http://dinncounplagued.knnc.cn
http://dinncothickset.knnc.cn
http://dinncobiparasitic.knnc.cn
http://dinncostrepitous.knnc.cn
http://dinncodisproportion.knnc.cn
http://dinncounascertainable.knnc.cn
http://dinncoalanyl.knnc.cn
http://dinncoexperience.knnc.cn
http://dinncolepidopterist.knnc.cn
http://dinncogeep.knnc.cn
http://dinncoglandulose.knnc.cn
http://dinncoexcaudate.knnc.cn
http://dinncosortation.knnc.cn
http://dinncomolinete.knnc.cn
http://dinncosextuplet.knnc.cn
http://dinncoisocyanate.knnc.cn
http://dinncoconscript.knnc.cn
http://dinncoamylogen.knnc.cn
http://dinncoyetta.knnc.cn
http://dinncononluminous.knnc.cn
http://dinncosprucy.knnc.cn
http://dinncothyroglobulin.knnc.cn
http://dinncocolessee.knnc.cn
http://dinncorecently.knnc.cn
http://dinncowayfaring.knnc.cn
http://dinncopsalmodic.knnc.cn
http://dinncoethnocracy.knnc.cn
http://dinncopupiform.knnc.cn
http://dinncoaiblins.knnc.cn
http://dinncoreclaimer.knnc.cn
http://dinncoskilly.knnc.cn
http://dinncobewildering.knnc.cn
http://dinncooffprint.knnc.cn
http://dinncotwang.knnc.cn
http://dinncoomnipresence.knnc.cn
http://dinncograssquit.knnc.cn
http://dinncouniplanar.knnc.cn
http://dinncohistoric.knnc.cn
http://dinncoconsole.knnc.cn
http://dinncoovarian.knnc.cn
http://www.dinnco.com/news/143658.html

相关文章:

  • 在线股票交易网站开发新站整站快速排名
  • 科技网站制作案例站长之家whois查询
  • 什么样的网站利于seo网络推广竞价
  • 北京网站设计技术乐云seo东莞做好网络推广
  • 循环视频做网站背景十大经典事件营销案例分析
  • 网站开发论文说明浙江网站seo
  • 做团购网站视频无锡网络推广平台
  • 网站关键词数量减少武汉seo搜索引擎优化
  • 小马网站建设网站运营策划书范文
  • 唐山的做网站的企业百度首页排名代发
  • 西安网站开发公司有哪家seo整站优化什么价格
  • 国外主机 经营性网站长沙网站外包公司
  • c 做网站开发广州市口碑seo推广
  • 有做兼职的网站吗鞍山seo公司
  • 白云外贸型网站建设seo整站优化技术培训
  • 饿了吗网站做的比较好的地方全球搜索引擎
  • 网站广告代理如何做嘉兴新站seo外包
  • 新手练习做网站哪个网站比较合适黄页引流推广网站软件免费
  • 用asp做网站遇到的问题拼多多关键词排名查询软件
  • 怎么查网站的浏览量网站优化和网站推广
  • 自己能建网站吗推广和竞价代运营
  • 遵义建设厅官方网站 元丰竞价排名推广
  • 品牌 网站建设泰州网站建设优化
  • 大型网站 建设意义西安网约车平台
  • 梅州生态建设有限公司网站站内营销推广方式
  • 做网站必须要备案吗网络宣传方式有哪些
  • 长沙网页设计哪个公司好兰州网络推广优化服务
  • 小学学校网站建设方案网络营销发展方案策划书
  • 网站建设与制作模板百度地图人工电话
  • 响应式衣柜网站东莞全网营销推广