我是否了解如何将.csv文件导入sqlite?

时间:2011-07-19 18:02:52

标签: android eclipse sqlite csv

我目前有一个.csv文件,其中包含几个未标记的数据列,据我所知,这些数据在sqlite中转换为以下数据类型:

  • datetime(格式为7/19/2011 12:00:00 PM) - >数字
  • double - >实
  • char(1) - >文本
  • float - >实

我可以通过执行以下操作来创建数据库:

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”,我不知道这是什么,这是什么,或者如何做到这一点,或者如果它甚至是必要的,或它的用途。我还缺少什么?

2 个答案:

答案 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如何将其包含到您的应用程序中。