设为首页 收藏本站
查看: 1321|回复: 0

[经验分享] 如何把批量数据导入到android 的 sqlite 数据库(转)

[复制链接]

尚未签到

发表于 2016-12-1 09:37:15 | 显示全部楼层 |阅读模式
  出自  http://hi.baidu.com/friendofsnowandsea/blog/item/3ffede2d218505f98a1399fb.html
  SQLite 数据库需要放在目录中的databases folder,我们可以使用“adb shell” 的 “mkdir”来创建这个文件夹。
  #ls
  lib
  #mkdir databases
  #ls
  databases
  lib
  默认创建的"databases"仅供 "root"权限访问,而在Android平台中,我们启动的每个“Activity”都是使用不同的“user”权限,所以我们需要用“chmod”命令来改变默认权限:
  #chmod 777 databases
  #ls -l
  drwxrwxrwx  root              2010-04-21 20:33 databases
  drwxr-xr-x     sysem           2010-04-21 20:31 lib
  有了存放数据库的文件夹,可以开始创建数据库。使用“sqlite3”来创建
  #cd databases
  #sqlite3 note.db
  SQLite version 3.5.9
  Enter ".help" for instructions
  sqlite>
  现在这个数据库还是空的,里面没有存储任何数据或记录。当执行“sqlite3”命令后,命令提示符从#换成“sqlite>”,表示进入“SQLite”互动模式,可以做添加,删除,修改,查询等动作。
  我们可以输入一下命令来创建table。
  sqlite> CREATE TABLE dictionary (word VARCHAR(30), pronounce VARCHAR(50), comment NVARCHAR(100));
  注意,SQLite命令和java代码一样,大小写代表不同符号,而且以分号结尾。sqlite3与许多SQL数据库软件
  不同的是,它不在乎字段属于哪一种资料型态:sqlite3的字段可以储存任何东西:文
  字、数字、大量文字(blub),它会在适时自动转换。
  输入以上命令后,可以用一下命令来验证是否创建成功,这命令作用是列出目录下所有SQLite的数据库列表:
  sqlite>.databases
  seq           name             file
  -----          --------            ------------------------------------------------------------------------
  0              main               /data/data/com.wenjie.android.dictionary/databases/dictionary.db
  “.table” 用来列出所有tables。
  sqlite>.table
  dictionary
  ".schema"用来现实出创建数据表的命令。
  sqlite>.schema
  CREATE TABLE dictionary (word VARCHAR(30), pronounce VARCHAR(50), comment NVARCHAR(100));
  若有多个数据表,也可以在".schema"后面输入特定的数据表当参数,如".schema dictionary",这样只会打印出对应的数据表创建命令。
  Apr 18, 2010
  1. 进入到F:\Android\android-sdk_r05-windows\android-sdk-windows\tools 以后,
  2. 应该使用adb push命令将硬盘上的文件复制到android AVD 的某个应用程序的databases文件夹下,执行命令如下:
  adb push F:\en.txt data/data/com.wenjie.android.dictionary/databases
  =>758 KB/s(813441 bytes in 1.046s)   
  3. 在AVD是运行的状态下,按着以下步骤:
  (1) 运行输入 adb shell 
(2) 进入命令界面后 输入 ls 指令 会列出文件的目录
(3) cd 进入你想要的目录里
(4) 一层一层进去后会发现 databases目录 你的数据文件就在这个目录下放着
(5) sqlite3 test  (test就是你创建的数据库的名称 注意:不要加.db 后缀)
  (6) 现在你就进入你创建的test数据库了使用  .tables 就可以查看所有的表了;
  ***************************************************************
  adb shell

#cd /data/data/<package_name>/databases
  # find data -name "*.db" -print
data/data/com.google.android.providers.contacts/databases/contacts.db
data/data/com.google.android.providers.googleapps/databases/accounts.db
data/data/com.google.android.providers.im/databases/im.db
data/data/com.google.android.providers.media/databases/media.db
data/data/com.google.android.providers.telephony/databases/mms.db
data/data/com.google.android.providers.telephony/databases/sms.db
data/data/com.google.android.providers.telephony/databases/telephony.db
data/data/com.google.android.providers.settings/databases/settings.db
data/data/com.google.android.maps/databases/maps.db
data/data/com.wenjie.android.dictionary/dictionary.db
  or
  #ls
  com.wenjie.android.dictionary
  com.android.camera
  :
  :
  com.android.browser
  #cd com.wenjie.android.dictionary
  cd com.wenjie.android.dictionary
  #ls
  databases (** 只有databases这个文件夹)
  #cd databases
  cd databases
  #ls
  dictionary.db (**只有dictionary.db文件)
  #sqlite3 dictionary.db
  SQLite version 3.5.0
Enter ".help" for instructions
sqlite> .separator "|"
  sqlite> .import en.txt dictionary
  (**en.txt成功导入到dictionary.db)
  其他sqlite的特别用法
  
1. 建立索引
  如果资料表有相当多的资料,我们便会建立索引来加快速度。好比说:
  create index film_title_index on film(title);
  意思是针对film资料表的name字段,建立一个名叫film_name_index的索引。这个指
  令的语法为
  create index index_name on table_name(field_to_be_indexed);
  一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。这一切的操作
  都是在幕后自动发生的,无须使用者特别指令。
  2. sqlite可以在shell底下直接执行命令:
  sqlite3 film.db "select * from film;"
  输出 HTML 表格:
  sqlite3 -html film.db "select * from film;"
  将数据库「倒出来」:
  sqlite3 film.db ".dump" > output.sql
  利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库
  备份了):
  sqlite3 film.db < output.sql
  在大量插入资料时,你可能会需要先打这个指令:
  begin;
  插入完资料后要记得打这个指令,资料才会写进数据库中:
  commit;
  Jun 26, 2010
  利用空余的时间终于搞成了电子词典的部分功能。但是遇到以下问题:
 (1).当要利用插入功能插入新单词是爆出如下问题:
  android.database.sqlite.SQLiteException: error code 8: attempt to write a readonly database
  原因是没有给SQLite数据库文件所在文件夹对应用户的读写权限。

#ls -l dictionary.db
  -rw-r--r--  root       root         5120 2010-05-09 14:32 dictionary.db
  然后把权限改了就没有问题了。
  #chmod 777 dictionary.db
  chomod 777 dictionary.db
  #ls -l dictionary.db
  -rwxrwxrwx  root       root       

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308033-1-1.html 上篇帖子: 如何把批量数据导入到android 的 sqlite 数据库(更新中) 下篇帖子: Android学习之用adb连接模拟器查询sqlite数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表