我目前有一个.csv文件,其中包含几个未标记的数据列,据我所知,这些数据在sqlite中转换为以下数据类型:
我可以通过执行以下操作来创建数据库:
sqlite> create table myTable (myVar1 numeric, myVar2 real, myVar3 text, myVar4 real);
sqlite> .separator ","
sqlite> .import myFile.csv myTable
然后我将新创建的myTable.db复制并粘贴到eclipse中项目的“assets”文件夹中。我创建了一个扩展SQLiteOpenHelper的DatabaseHelper类,然后我可以在Android项目中开始使用和读取数据库。
我说得对吗?我之前从未使用过数据库,而且我已经看到了很多不同的指令。我的一些问题是 - 我是否必须标记.csv文件的列?我的.csv文件不够“简单”,只能使用.import,我需要找一个程序来翻译吗?我遇到的网站说我需要将某些东西(我似乎没有)重命名为“_id”,我不知道这是什么,这是什么,或者如何做到这一点,或者如果它甚至是必要的,或它的用途。我还缺少什么?
答案 0 :(得分:3)
我认为除了第一个datetime列之外,你正在“正确”。您应该使用TEXT类型,而不是数字类型。
此外,您可以在导入后检查数据以查看是否一切正常,尤其是使用该日期时间字段:
SELECT * FROM myTable ORDER BY RANDOM() LIMIT 10;
<强>更新强>
回应OP的最后评论:我对你如何存储日期(时间)的理解是它取决于你的背景。因此,如果平面文件中的日期格式为“7/19/2011 12:00:00 PM”,那么无需任何转换,它仍将作为TEXT导入。
答案 1 :(得分:1)
将csv导入数据库是15行代码任务,它使您可以更好地控制此过程。 像“var3”这样的表列名称非常糟糕,但是不需要在数据库中重命名它只能使用sql别名:
select myVar1 _id, myVar2 from myTable
_id是表的主键列的通用名称(通常数字列必须是唯一的)。每个使用数据存储区的ADK类都假定它是中继,所以使用这个约定很好。 如果您只想要只读数据库,可以在本地准备数据库并找到一些tutorials如何将其包含到您的应用程序中。