【问题标题】:JdbcTemplate do not mapping result to map : related with windows asciiJdbcTemplate 不将结果映射到映射:与 windows ascii 相关
【发布时间】:2017-09-28 13:49:06
【问题描述】:

我从MSSQL 获得了一个转储文件。它使用euckr 编码,并具有一些Windows ascii 字符,例如^F、^D、M。

我想做的是……

  • LOAD DATA LOCAL INFILE '{My CSV FILE}' INTO TABLE '{TARGET TABLE}' CHARACTER SET euckr FIELDS TERMINATED BY '|:' - 将 csv 推送到 MYSQL
  • 在java源代码上使用jdbcTemplate从MYSQL中读取数据

LOAD ...之后,我可以在workbench中看到数据,看起来很正常。(它没有显示我上面提到的任何特殊字符。)

但是,当执行jdbcTemplate.queryForMap 时,它无法将结果推送到Map,我认为是MS ascii 的原因。

错误消息是(我输入了这个,因为 Windows 控制台无法复制)

org.springframwwork.dao.TransientDataAccessResourceException: 
PreparedStatedmentCallback; SQL [SELECT * FROM TARGET_TABLE]; 
Value '^A4 data1    1999-00-00^Fabc^D0000^A0^@...' 

如何消除这些特殊字符?

  • 如果没有这些,我是否请求新的 MSSQL 转储文件? (不知道在MSSQL中能不能消除。我对MSSQL没有经验)
  • 在jdbctemplate映射结果之前有没有做一些工作?

谢谢。

仅供参考, mysql编码为UTF8,版本为5.6.35

【问题讨论】:

    标签: mysql sql-server ascii special-characters jdbctemplate


    【解决方案1】:

    我不确定,但在我的实验中,,,

    • Windows 中的LOAD DATA LOCAL INFILE 会产生一些类似这样的奇怪字符。
    • 在 OSX 或 Linux 中执行相同的查询(在我的例子中,CentOS mysql 客户端)看起来不错。(不要插入像 ^M 这样的字符)

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多