在 R 中将日期和时间写入 SQL 数据库
Writing date and time into SQL database in R
我正在尝试使用一个数据集创建一个 SQL 数据库,该数据集的列中包含日期和时间。我 运行 遇到的问题是,当数据被写入 SQL 数据库,并读回 R 时,日期和时间列最终具有数字结构而不是 Posixct 结构,或者没有正确显示日期和时间。
我一直在使用 RSQlite 和 DBI 包在两者之间工作。我刚开始使用 SQL,是否有合适的方法将日期和时间列读入 SQL 数据库?
感谢您的宝贵时间。
SQL网站不支持日期和时间类型。以下是一些选项:
- 自己将 date/time 字段转换回 R classes。您可以为读入 table 的每个 table 编写一个单独的函数,并透明地进行转换,或者您可以对列采用命名约定,让单个函数根据如果您控制数据库本身,则命名规则。除了编写自己的函数之外,实现命名约定的另一种方法是使用 sqldf 包。如果您使用
sqldf("select ...", dbname = "mydb", connection = con, method = "name__class")
,它会将名称中有两个下划线的每一列转换为两个下划线之后的 class 名称。请注意 name__class
也有两个下划线。
- dbmisc package (also see this) 可以执行转换。您必须按照此处所述为每个 table 准备架构,即布局规范,以便使用它。
- 使用支持 date/time 类型的不同数据库。我通常在这种情况下使用 H2 数据库。 RH2 软件包以类似于 RSQLite.
的方式在 R 驱动程序包中包含了整个 H2 数据库软件。
- 根据下面的评论,最新版本的 RSQLite 支持时间和日期字段;但是,请注意,这是在 R 方面,就像上面的其他解决方案一样(使用 H2 除外),并且不会改变 SQLite 本身没有这种支持的事实,例如,如果您使用 SQL修改这样的字段比如加1得到下一个日期就不再是同类型了
我正在尝试使用一个数据集创建一个 SQL 数据库,该数据集的列中包含日期和时间。我 运行 遇到的问题是,当数据被写入 SQL 数据库,并读回 R 时,日期和时间列最终具有数字结构而不是 Posixct 结构,或者没有正确显示日期和时间。
我一直在使用 RSQlite 和 DBI 包在两者之间工作。我刚开始使用 SQL,是否有合适的方法将日期和时间列读入 SQL 数据库?
感谢您的宝贵时间。
SQL网站不支持日期和时间类型。以下是一些选项:
- 自己将 date/time 字段转换回 R classes。您可以为读入 table 的每个 table 编写一个单独的函数,并透明地进行转换,或者您可以对列采用命名约定,让单个函数根据如果您控制数据库本身,则命名规则。除了编写自己的函数之外,实现命名约定的另一种方法是使用 sqldf 包。如果您使用
sqldf("select ...", dbname = "mydb", connection = con, method = "name__class")
,它会将名称中有两个下划线的每一列转换为两个下划线之后的 class 名称。请注意name__class
也有两个下划线。 - dbmisc package (also see this) 可以执行转换。您必须按照此处所述为每个 table 准备架构,即布局规范,以便使用它。
- 使用支持 date/time 类型的不同数据库。我通常在这种情况下使用 H2 数据库。 RH2 软件包以类似于 RSQLite. 的方式在 R 驱动程序包中包含了整个 H2 数据库软件。
- 根据下面的评论,最新版本的 RSQLite 支持时间和日期字段;但是,请注意,这是在 R 方面,就像上面的其他解决方案一样(使用 H2 除外),并且不会改变 SQLite 本身没有这种支持的事实,例如,如果您使用 SQL修改这样的字段比如加1得到下一个日期就不再是同类型了