http://blog.csdn.net/johnnycode/article/details/7413111

今天遇到 Oracle 导出的12万条CSV格式数据导入 Android Sqlite 中 ,整个流程记录下,分享一下,因为处于考虑数据保密问题,下列数据都为 Demo 数据。

1、首先需要将 CSV  文件处理下字符集的问题 ,众所周知 sqlite 默认字符集 UTF-8 ,涉及中文的地方如果不设置那么导入sqlite的数据将会乱码。

右键选择 CSV 文件,打开方式为 记事本 ,将会看到如下数据

需要将第一行列去除,然后将分号 ” 同时去掉,最终结果为

下面这步最重要,将文件另存为,最下方 编码 选择 UTF-8 ,然后另存到 C 盘根目录即可。

2、因为PC没有安装 sqlite ,所以这里将 sqlite 操作交给 Android 手机来处理。

首先将 数据压入 Android 手机 sd 卡中

  1. C:\Users\John>adb push c:/employee.csv /mnt/sdcard
  2. 0 KB/s (89 bytes in 0.191s)
C:\Users\John>adb push c:/employee.csv /mnt/sdcard
0 KB/s (89 bytes in 0.191s)

使用 adb 命令连接手机,进入 sd 卡目录

  1. C:\Users\John>adb shell
  2. $ cd /mnt/sdcard/
  3. cd /mnt/sdcard/
C:\Users\John>adb shell
$ cd /mnt/sdcard/
cd /mnt/sdcard/

使用 sqlite3 创建 mydata.db 数据库,如不指定路径,那么 sqlite3 将会默认将数据库文件创建运行 sqlite3 的目录中,建表语句可以从 oracle 中复制即可。建表完毕,可以使用 .ta 命令查看新建表是否成功。

  1. $ sqlite3 mydata.db
  2. sqlite3 mydata.db
  3. SQLite version 3.6.22
  4. Enter ".help" for instructions
  5. sqlite> create table EMPLOYEE(xh VARCHAR2(60),xm VARCHAR2(100),bm VARCHAR2(100),dz VARCHAR2(200));
  6. create table EMPLOYEE(xh VARCHAR2(60),xm VARCHAR2(100),bm VARCHAR2(100),dz VARCHAR2(200));
  7. sqlite> .ta
  8. .ta
  9. EMPLOYEE
$ sqlite3 mydata.db
sqlite3 mydata.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite> create table EMPLOYEE(xh VARCHAR2(60),xm VARCHAR2(100),bm VARCHAR2(100),dz VARCHAR2(200));
create table EMPLOYEE(xh VARCHAR2(60),xm VARCHAR2(100),bm VARCHAR2(100),dz VARCHAR2(200));
sqlite> .ta
.ta
EMPLOYEE

3、导入 csv 数据文件到新建的 employee 表中 ,需要做点准备工作。因为 csv 默认数据分割符为逗号 “,”  而 sqlite 默认数据分割符为 “|” ,先用 .show 命令确认下,然后再改,当然也可以先改 然后再用 .show 来查看,运行 sqlite 命令一定要注意他自身命令都是要 点 开头滴。

  1. sqlite> .show
  2. .show
  3. echo: off
  4. explain: off
  5. headers: off
  6. mode: list
  7. nullvalue: ""
  8. output: stdout
  9. separator: "|"
  10. width:
  11. sqlite> .separator ","
  12. .separator ","
sqlite> .show
.show
echo: off
explain: off
headers: off
mode: list
nullvalue: ""
output: stdout
separator: "|"
width:
sqlite> .separator ","
.separator ","

4、上述准备工作做好之后,就可以正式导入数据。

.import  //导入命令

/mnt/sdcard/employee.csv  //csv文件路径

employee //csv文件导入指定表

  1. sqlite> .import /mnt/sdcard/employee.csv employee
  2. .import /mnt/sdcard/employee.csv employee
sqlite> .import /mnt/sdcard/employee.csv employee
.import /mnt/sdcard/employee.csv employee

展示结果,OK 没啥问题。

  1. sqlite> select * from employee;
  2. select * from employee;
  3. "XH","XM","BM","DZ"
  4. "1","王轩宇","研发部","山东青岛"
  5. "2","王云汐","运营部","山东青岛"
sqlite> select * from employee;
select * from employee;
"XH","XM","BM","DZ"
"1","王轩宇","研发部","山东青岛"
"2","王云汐","运营部","山东青岛"

参考文章:

Android Sqlite 导入CSV文件 .的更多相关文章

  1. ACCESS导入CSV文件出现乱码解决办法

    在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...

  2. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中   将数 ...

  3. oracle导入csv文件

    oracle导入csv文件: 1.建好对应的表和字段: 2.新建test.ctl文件,用记事本编辑写入: load data infile 'e:\TB_KC_SERV.csv' --修改对应的文件路 ...

  4. python导入csv文件时,出现SyntaxError

    背景 np.loadtxt()用于从文本加载数据. 文本文件中的每一行必须含有相同的数据. *** loadtxt(fname, dtype=<class 'float'>, commen ...

  5. R: 导入 csv 文件,导出到csv文件,;绘图后导出为图片、pdf等

    ################################################### 问题:导入 csv 文件 如何从csv文件中导入数据,?参数怎么设置?常用参数模板是啥? 解决方 ...

  6. python导入csv文件出现SyntaxError问题分析

    python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...

  7. neo4j导入csv文件

    neo4j导入csv文件 关于neo4j的安装 官网和网上博客提供了n中安装的方法,这里不再赘述: 普通安装: https://cloud.tencent.com/developer/article/ ...

  8. Oracle数据库导入csv文件(sqlldr命令行)

    1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...

  9. 解决Gephi导入csv文件时提示“边表格需要一个包含节点标号‘源’和‘目标’列” 问题的两个方案

    1.将csv文件在Excel中打开,并重新保存为csv. 2.将csv文件导入到sqlite,使用sqlite作为数据来源. 标准格式如下

随机推荐

  1. 批量产生ssh2项目中hibernate带注解的pojo类的快捷方法

    近几个月一直在忙于项目组的ios应用项目的开发,没有太多时间去研究web应用方面的问题了.刚好,昨天有网友问到如何批量产生hibernate带注解的pojo类的快捷方法,所谓批量就是指将当前数据库中所 ...

  2. ↗☻【HTML5秘籍 #BOOK#】第4章 Web表单

    from元素用于组织所有表单部件,负责告诉浏览器把数据提交到哪里,方法是在action属性中提供一个URL.假如你只想在客户端使用JavaScript操作表单,那么只要在action属性中指定一个#即 ...

  3. 【转】iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) -- 不错不错

    原文网址:http://blog.csdn.net/totogo2010/article/details/8615940 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手 ...

  4. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)

    mvc renderaction   renderpartial  杂谈      Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. ...

  5. XMPP 初探

    最近刚好有机会碰到XMPP,把一些学习心得记录在这边. XMPP(Extensible Messageing and Presence Protocol)是一种IM的通讯协定,其前身为Jabber,后 ...

  6. 基于MongoDB分布式存储进行MapReduce并行查询

    中介绍了如何基于Mongodb进行关系型数据的分布式存储,有了存储就会牵扯到查询.虽然用普通的方式也可以进行查询,但今天要介绍的是如何使用MONGODB中提供的MapReduce功能进行查询.     ...

  7. NGINX(一)内存结构

    ngx_buf_t和ngx_chain_t是nginx中操作内存的重要手段, 很多的数据都需要通过这个结构进行保存. 其中ngx_buf_t中保存一块可用内存, ngx_chain_t则是将内存块连接 ...

  8. Xcode中Info.plist文件各个键的作用说明【搜藏】

    Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果⽤户所在地没有相应的语言资源,则用这个key的v ...

  9. LeetCode题解——Reverse Integer

    题目: 数字翻转,即输入123,返回321:输入-123,返回-321. 代码: class Solution { public: int reverse(int x) { , sign = ; ) ...

  10. 使用 cloc 统计代码行数

    可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释.空行所占用的文本行都统计在内.如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做 ...