Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我是否了解如何将.csv文件导入sqlite?_Android_Eclipse_Sqlite_Csv - Fatal编程技术网

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

Android 我是否了解如何将.csv文件导入sqlite?,android,eclipse,sqlite,csv,Android,Eclipse,Sqlite,Csv,我目前有一个.csv文件,其中包含几个未标记的数据列,据我所知,这些数据在sqlite中转换为以下数据类型: 日期时间(格式为2011年7月19日12:00:00 PM)->数字 双重->真实 字符(1)->文本 浮动->真实 我可以通过执行以下操作创建数据库: sqlite> create table myTable (myVar1 numeric, myVar2 real, myVar3 text, myVar4 real); sqlite> .separator "," s

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

  • 日期时间(格式为2011年7月19日12:00:00 PM)->数字
  • 双重->真实
  • 字符(1)->文本
  • 浮动->真实
我可以通过执行以下操作创建数据库:

sqlite> create table myTable (myVar1 numeric, myVar2 real, myVar3 text, myVar4 real);
sqlite> .separator ","
sqlite> .import myFile.csv myTable
然后,我将新创建的myTable.db复制并粘贴到eclipse项目中的“资产”文件夹中。我创建了一个DatabaseHelper类来扩展SQLiteOpenHelper,然后我就可以开始在我的Android项目中使用和读取数据库了


我说得对吗?我以前从来没有使用过数据库,而且我看到过很多不同的操作说明。我的一些问题是--我必须标记.csv文件的列吗?我的.csv文件是否不够简单,无法直接使用.import,我需要找到一个程序来翻译它?我曾遇到一些网站说我需要将某个东西(我似乎没有)重命名为“_id”,我不知道这是什么,在哪里,或者怎么做,或者是否有必要,或者它的用途。我还遗漏了什么?

除了第一个datetime专栏之外,我认为你的理解是“正确的”。您应该使用文本类型,而不是数字类型

此外,您还可以在导入后检查数据,以查看是否一切正常,尤其是对于datetime字段:

SELECT * FROM myTable ORDER BY RANDOM() LIMIT 10;
更新


作为对OP最后一条评论的回应:我对如何存储日期(时间)的理解是,它取决于您的上下文。因此,如果平面文件中的日期格式为“7/19/2011 12:00:00 PM”,则无需任何转换,它将以文本形式导入。

将csv导入数据库需要15行代码,这使您能够更好地控制此过程。 像“var3”这样的表列名称非常糟糕,但不需要在数据库中重命名,您只需使用sql别名即可:

select myVar1 _id, myVar2 from myTable 
_id是表的主键列的通用名称(通常是数字列,必须是唯一的)。使用数据存储的每个ADK类都假定它是中继,所以使用这种约定很好。
如果您只需要只读数据库,您可以在本地准备数据库,并找到一些方法将其包含到应用程序中。

SQLite是无类型的,您不必担心数据类型存储@Pentium10:您的链接指向的是sqlite 2的数据类型文档,而不是sqlite 3。我也对datetime位感到困惑,但建议它应该是数字的。。。虽然没有AM/PM和诸如此类的功能,这可能是一种不同的格式。您通常希望对日期使用类型关联文本。通常,我不会将变量命名为“var”、文件命名为“file”或表命名为“table”。。。这只是为了举个例子。因为我的数据库是按日期/时间排序和访问的,所以您是说第一列应该被称为_id,而不是被称为myVar1吗?所以我应该将其声明为createtablemytable(_idtext,myVar2 real,myVar3 text,myVar4 real)?是的,我只想要一个只读数据库。你能把我链接到你所说的这些教程中的一个吗?我已经链接了一些看起来有用的博客文章。我还建议您熟悉基本的数据库概念,如主键——这是一个太复杂的主题,无法在这里解释。android中带有主键的列应命名为“_id”类型的数字,并且该列中的值必须是唯一的,因为严格标识单行。用非常简单的方式,你可以把它看作一个“行号”