在做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. You're trying to decode an invalid JSON String JSON返回有解析问题

    SpringMVC架构的web程序,通常用map返回消息在浏览器中显示,但是实际中报下列错误“”You're trying to decode an invalid JSON String“返回的字符 ...

  2. Redis persistence demystified

    https://redis.io/topics/persistence http://oldblog.antirez.com/post/redis-persistence-demystified.ht ...

  3. Windows平台,开机自动运行应用

    打开注册表编辑器(Win+R后执行regedit) 进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 新建字符串值, ...

  4. Raspberry Pi3 ~ C语言控制串口

    注明出处:http://www.cnblogs.com/einstein-2014731/p/5551846.html 使用C语言控制树莓派3B的串口,实现使用串口收发数据的目的.之前以为这个串口是被 ...

  5. Machine Learning No.1: Linear regression with one variable

    1. hypothsis 2. cost function: 3. Goal: 4. Gradient descent algorithm repeat until convergence { (fo ...

  6. leetcode 792. Number of Matching Subsequences

    Given string S and a dictionary of words words, find the number of words[i] that is a subsequence of ...

  7. Linux下直接读写物理地址内存

    虚拟 转 物理地址  virt_to_phys( *addr );物理 转 虚拟地址  phys_to_virt( *addr ); 如: unsigned long pProtectVA; phys ...

  8. ubuntu 12.04安装alsa-lib、alsa-utils【转】

    1. alsa-lib ./configure sudo make install 注意:默认是安装到/usr/这个目录下面,但是我测试多了多次,安装了alsa-lib之后,系统就没有声音了,也没有找 ...

  9. flume 日志收集单节点

    flume 是 cloudera公司研发的日志收集系统,采用3层结构:1. agent层,用于直接收集日志;2.connect 层,用于接受日志; 3. 数据存储层,用于保存日志.由一到多个maste ...

  10. ietester

    ietest 最好安装在默认的C 装在其他的地方会报错