在做sdb 导入操作时,通过more 查看数据,格式是比较正常的,样例数据如下:

CB20160630968101173208|||||_*||BZ|B3412|||||09664.8900|
||||BI968101|BI579101|BI913101|BI579001|BI579101||N9|_9|X00|_0|N9||N9|N9||||||-- ::|-- ::||N9|N9||N9|EST||||||||||05_FIN_EVT_DTL_CB0_A2|B_JBPF10|
 
但是一旦做数据导入,导入命令如下
/data/sdbadmin/bin/sdbimprt --ignorenull true -j  --trim both -e "|" -r "\n" --type csv \
-s jushantest02 -p \
-c foo -l bar \
--file /data/testdata/test.txt \
--fields "COL1 string,COL2 string,COL3 string,COL4 string,COL5 string,COL6 string,COL7 string,COL8 string,COL9 string,COL10 string,COL11 string,COL12 string,COL13 string,COL14 string,COL15 string,COL16 string,COL17 string,COL18 string,COL19 string,COL20 string,COL21 string,COL22 string,COL23 string,COL24 string,COL25 string,COL26 string,COL27 string,COL28 string,COL29 string,COL30 string,COL31 string,COL32 string,COL33 string,COL34 string,COL35 string,COL36 string,COL37 string,COL38 string,COL39 string,COL40 string,COL41 string,COL42 string,COL43 string,COL44 string,COL45 string,COL46 string,COL47 string,COL48 string,COL49 string,COL50 string,COL51 string,COL52 string,COL53 string,COL54 string,COL55 string,COL56 string,COL57 string,COL58 string,COL59 string,COL60 string,COL61 string,COL62 string,COL63 string,COL64 string,COL65 string,COL66 string,COL67 string"
 
发现导入数据库中的数据格式有问题
db.foo.bar.find()
{
"_id": {
"$oid": "57bc0f8a5dbe8e1f31000000"
},
"COL1": "CB20160630968101173208",
"COL2": "?5",
"COL3": "?20160630",
"COL4": "?173208",
"COL5": "?02",
"COL6": "?@_*",
...
"COL64": "?CB_JBPF10",
"COL65": "?20160630\r"
}
 
 
大家可以发现,每个字段前面都出现了一个"?" 符号,证明这个字段切分符肯定不止"|"符号,并且在记录分割符上,应该是"\r\n",而不是"\n"
 
解决方法,首先通过tail 命令截取少量的样例数据
tail - test.txt > test2.txt
 
然后通过 od 命令将不可见字符打印出来,给大家一个od 的使用例子
echo "A" | tr -d "\n" | od -An -t dC
   65
A 字符对应的ascii 表就是65,所以我们可以通过这个命令来抓取不可见字符
执行
cat test2.txt  | tr -d "\n" | od -An -t dC

打印的结果如下


通过仔细观察,可以发现字段分隔符应该为  124 27 两个字符
所以在使用sdbimprt 导入工具时,应该调整为以下命令
/data/sdbadmin/bin/sdbimprt --ignorenull true -j  --trim both -e "\124\27" -r "\r\n" --type csv \
-s jushantest02 -p \
-c foo-l bar\
--file /data/testdata/test.txt \
--fields "COL1 string,COL2 string,COL3 string,COL4 string,COL5 string,COL6 string,COL7 string,COL8 string,COL9 string,COL10 string,COL11 string,COL12 string,COL13 string,COL14 string,COL15 string,COL16 string,COL17 string,COL18 string,COL19 string,COL20 string,COL21 string,COL22 string,COL23 string,COL24 string,COL25 string,COL26 string,COL27 string,COL28 string,COL29 string,COL30 string,COL31 string,COL32 string,COL33 string,COL34 string,COL35 string,COL36 string,COL37 string,COL38 string,COL39 string,COL40 string,COL41 string,COL42 string,COL43 string,COL44 string,COL45 string,COL46 string,COL47 string,COL48 string,COL49 string,COL50 string,COL51 string,COL52 string,COL53 string,COL54 string,COL55 string,COL56 string,COL57 string,COL58 string,COL59 string,COL60 string,COL61 string,COL62 string,COL63 string,COL64 string,COL65 string,COL66 string,COL67 string"
 
总结
一般开发者在做数据迁移时,最头疼的事情就是做数据格式的整理,所以在导入过程中遇到数据乱码或者是导入失败,首先应该通过od 命令检查数据真实的字符,是否存在不可见字符,如果是,则需要在导入时指定不同的切分符来完成数据的加载。

sequoiadb sdbexprt 导入工具进阶使用的更多相关文章

  1. 巨杉学习笔记 | SequoiaDB MySQL导入导出工具使用实战

    本文来自社区用户投稿,感谢这位小伙伴的技术分享 巨杉数据库架构简介 巨杉数据库作为分布式数据库是计算和存储分离架构,由数据库实例层和存储引擎层组成的.存储引擎层负责数据库核心功能比如数据读写存储以及分 ...

  2. Mongodb数据导出工具mongoexport和导入工具mongoimport介绍

    一.导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指定导出的数据项,也可以根据指定的条件导 ...

  3. Redis数据导入工具优化过程总结

    Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻 ...

  4. [转载]一个高效简洁的Aseprite to Unity导入工具

    原文链接 https://zhuanlan.zhihu.com/p/28644268  期待原作者上传至AssetStore. 今天,我的第一个 Unity 插件 MetaSprite 正式发布了它的 ...

  5. POI导入工具类

    前言 导入的通用方法,包括xls.xlsx的取值方法,非空判断方法,空行判断,处理了手机号读取和日期读取格式问题.这几个方法就可以完成简单读取了,有时间我在优化下. maven依赖 <!-- P ...

  6. Mongodb数据导出工具mongoexport和导入工具mongoimport介绍(转)

    原文地址:http://chenzhou123520.iteye.com/blog/1641319 一.导出工具mongoexport Mongodb中的mongoexport工具可以把一个colle ...

  7. CYS-Sqlite数据导入工具

    界面: 曹永思 下载地址:asp.net 2.0版 Sqlite数据导入工具.zip 欢迎转载,转载请注明出处,希望帮到更多人.

  8. 修改lastpass主密码后需重启firefox才能加载已保存的站点密码或用导入工具

    最近索尼事件闹得沸沸扬扬,预防黑客先从升级密码开始.由于开发的需要一般是用firefox作为默认的浏览器,很早以前就装了lastpass密码管理器作为必备附加组件,在注册时按一下Alt+G就会帮你生成 ...

  9. ImportTsv-HBase数据导入工具

    一.概述 HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv.关于Bulk load大家可以看下我另一篇博文. 通常HBase用户会使用HBase A ...

随机推荐

  1. asp.net c# select 动态加载数据

    1.说明通过 asp.net,利用jQuery ,c#语言给 select控件动态加载数据.前端页面使用的是.aspx类型的HTML页面,后台使用MVC上的controller控制器 2.webcon ...

  2. cpio

    1 压缩 -o,生成cpio格式的归档文件.从标准输入获取文件名列表. 2 解压 -i,对cpio格式的归档文件进行解压,生成单个的文件. 3 --null 从标准输入获取的文件名列表为"\ ...

  3. Django学习之站点缓存详解

      本文和大家分享的主要是django缓存中站点缓存相关内容,一起来看看吧,希望对大家学习django有所帮助. 缓存整个站点,是最简单的缓存方法 在 MIDDLEWARE_CLASSES 中加入 “ ...

  4. ubuntu搭建mysql

    步骤1 – 安装MySQL 在 Ubuntu 16.04 中,默认情况下,只有最新版本的 MySQL 包含在 APT 软件包存储库中.在撰写本文时,那是 MySQL 5.7 要安装它,只需更新服务器上 ...

  5. Vue一次性简洁明了引入所有公共组件

    使用场景 -在开发过程中,往往会有很多自己定义公用组件,我们通过import 导入,components挂载到实例上就行,项目刚开始还好,但是随着项目迭代,组件越来越多,同一个组件不同的方式用需要重复 ...

  6. jquery特效(6)—判断复选框是否选中进行答题提示

    前面有一段时间思想开了小差,跟着师父学习了一段时间才发现差距很大,看来我要奋起直追~\(≧▽≦)/~啦啦啦. 最近公司在做一个项目,需要根据用户选择的选项给出相应的提示,下面来看我写的测试程序的效果: ...

  7. Java JSON数据创建和读取

    Java  json数据创建 package com.JavaTest; import com.google.gson.JsonArray; import com.google.gson.JsonOb ...

  8. Java线程池技术以及实现

    对于服务端而言,经常面对的是客户端传入的短小任务,需要服务端快速处理并返回结果.如果服务端每次接受一个客户端请求都创建一个线程然后处理请求返回数据,这在请求客户端数量少的阶段看起来是一个不错的选择,但 ...

  9. html5--3.19 新增的progress/meter元素

    html5--3.19 新增的progress/meter元素 学习要点 了解progress/meter元素的用法 progress元素 是HTML5中新增的元素,用来建立一个进度条 通常与Java ...

  10. linux下syslog使用说明

    转自:http://blog.chinaunix.net/uid-25120309-id-3359929.html syslog 系统日志应用  1) 概述       syslog是Linux系统默 ...