Android Sqlite 导入CSV文件 .

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

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

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

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

 

须要将第一行列去除,而后将分号 ” 同时去掉,最终结果为编码

 

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

 

二、由于PC没有安装 sqlite ,因此这里将 sqlite 操做交给 Android 手机来处理。.net

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

 

  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 卡目录sqlite

  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 命令查看新建表是否成功。blog

  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


三、导入 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 ","

 

四、上述准备工做作好以后,就能够正式导入数据。

.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","王云汐","运营部","山东青岛"

 

参考文章: