【问题标题】:SQLite 3 CSV Import to TableSQLite 3 CSV 导入表
【发布时间】:2012-03-08 13:37:45
【问题描述】:

我正在使用这个资源来帮助我入门 - http://www.pantz.org/software/sqlite/sqlite_commands_and_general_usage.html

目前我正在使用内置的 SQLite 数据库创建一个 AIR 程序。在进行 SQL 查询方面,我可以被认为是一个完全的菜鸟。

表格列类型

我有一个相当大的 Excel 文件(14K 行),已导出到 CSV 文件。它有 65 列不同的数据类型(主要是整数、浮点数和短字符串,可能还有一些布尔值)。我不知道导入的正确形式以保留列结构,也不知道为每个 db 列选择的最佳数据格式。我可以对此提出一些意见。

表创建工具

是否有一个工具可以读取 XLS 文件并根据列标题生成快速查询语句以减轻手动查询的痛苦?我看到了这篇文章,但它似乎面向一个预先存在的 CSV 文件并使用了 python(我也是一个菜鸟)

提前感谢您抽出宝贵时间。 J

【问题讨论】:

  • 您能否提供您尝试使用的数据样本?您可以对其进行消毒以保护无辜者的姓名,但如果我们确切知道您要处理的内容,则提供有用的示例会容易得多。
  • 我实际上学到了很多关于为什么不在 AIR 中使用 SQLite,因为它不能很好地处理数据库更改。虽然不是我设想在结构上改变的数据库,但我仍然希望以后能够拥有该选项。所以我继续对 MySQL 数据库使用一些 HTTP / PHP 调用。我确实想出了如何导入它:) 不过感谢您的详细回复。
  • YAGNI(你不需要它)。您有什么可能的用例来动态更改数据库模式? (注意:如果归根结底,您可以随时转储到 SQL 并重新导入到不同的结构中。)

标签: excel sqlite csv air


【解决方案1】:

SQLite3 的列类型基本上归结为:

  • 文本
  • 数字(实数、浮点数)
  • INTEGER(整数的各种长度;但通常是 INT)
  • BLOB(二进制对象)

通常在 CSV 文件中,您会遇到字符串 (TEXT)、十进制数 (FLOAT) 和整数 (INT)。如果性能不重要,那么这些几乎就是您需要的仅有的三种列类型。 (CHAR(80) 在磁盘上比TEXT 小,但对于几千行来说这不是什么大问题。)

就将数据放入列而言,SQLite3 使用 type coercion 将输入数据类型转换为列类型,只要转换有意义。因此,您所要做的就是指定正确的列类型,SQLite 将负责以正确的方式存储它。

例如数字-1230.00、字符串"-1230.00"和字符串"-1.23e3"在存储在FLOAT列中时都将强制转换为数字1230。

请注意,如果 SQLite3 不能应用有意义的类型转换,它只会存储原始数据,而根本不尝试转换它。 SQLite3 很乐意将"Hello World!" 插入FLOAT 列。这通常是一件坏事。

请参阅SQLite3 documentation on column types and conversion 获取以下宝石:

类型相似性

为了最大化SQLite与其他数据库的兼容性 引擎,SQLite 支持列上的“类型关联”的概念。 列的类型亲和性是存储数据的推荐类型 在那一栏中。这里的重要思想是类型是 推荐,不需要。任何列仍然可以存储任何类型的 数据。只是有些列,如果有选择,会更喜欢 使用一个存储类而不是另一个。的首选存储类 列称为它的“亲和力”。

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 2018-11-28
    • 2011-04-16
    • 2013-02-03
    • 1970-01-01
    • 2014-05-15
    • 2015-09-23
    • 2017-05-14
    相关资源
    最近更新 更多