• Android Sqlite 导入CSV文件 .


    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:UsersJohn>adb push c:/employee.csv /mnt/sdcard  
    2. 0 KB/s (89 bytes in 0.191s)  
    C:UsersJohn>adb push c:/employee.csv /mnt/sdcard
    0 KB/s (89 bytes in 0.191s)

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

    1. C:UsersJohn>adb shell  
    2. $ cd /mnt/sdcard/  
    3. cd /mnt/sdcard/  
    C:UsersJohn>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.       
    11. sqlite> .separator ","  
    12. .separator ","  
    sqlite> .show
    .show
         echo: off
      explain: off
      headers: off
         mode: list
    nullvalue: ""
       output: stdout
    separator: "|"
        
    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","王云汐","运营部","山东青岛"

    参考文章:

  • 相关阅读:
    Linux下制作和使用静态库和动态库
    C语言的内存管理
    C语言柔性数组
    大小端模式
    C位域操作
    C/C++字节对齐
    C/C++指针
    Linux之Socket编程
    VSCode配置FTP
    GCC的编译过程和链接
  • 原文地址:https://www.cnblogs.com/wangs/p/3284153.html
Copyright © 2020-2023  润新知