sql-server - 将 SQLite 整数导出为 DateTime
问题描述
我有一个 SQLite3 数据库。我也有一个结构相同的 SQL Server 数据库。我需要从 SQLite 导出数据并将其插入 SQL Server 数据库。
从 SQLite 导出和生成的导出的修改需要 100% 编写脚本。插入 SQL Server 数据库将通过 SQL Server Management Studio 手动完成。
通过这里的答案,我有一个很好的数据库转储。我可以根据需要修改大部分脚本sed
。
我现在坚持的一件事是 SQLite 数据库将时间戳存储为自 UNIX 纪元以来的秒数。SQL Server 中的等效列是DATETIME
. 据我所知,将整数插入 DateTime 是行不通的。
有没有办法指定某些字段在从 SQLite 转储时以某种方式转换?意思是,指定整数字段作为 SQL Server 可以理解的正确日期时间字符串转储?
或者,有什么我可以在 Linux 命令行上运行的东西以某种方式找到这些整数时间戳并转换它们吗?
编辑:任何在 Ubuntu 上的 Bash 脚本中运行的东西都是可以接受的。
解决方案
三种基本解决方案:(1)修改dump前的数据;(2) 在转储后操作文件,或 (3) 在导入时修改数据。您选择哪一个将取决于您有多少自由来修改模式。
如果您希望在 SQLite 中执行此操作,我建议添加text
具有根据需要存储的日期的列以导入到 SQL Server,然后忽略或删除转储中的原始列。SQLite文档页面datetime()
可能会有所帮助,可能会回答这个问题。
或者,您可以在 SQL Server中编写一个处理导入的函数。也许将其设置在插入触发器上。
否则,操作转储文件的脚本也会起作用。听起来您对如何执行此操作有很好的了解。
推荐阅读
- python - 如何导入方法包装类型?
- c# - 我的 asp.net Web 应用程序出现错误
- python - AttributeError:“NoneType”对象在使用 StringVar() 时没有属性“_root”
- php - 如何从php中包含'<'符号的字符串中删除空格?
- java - 将二叉树附加到另一个二叉树
- woocommerce - 如果街道地址在黑名单中,则拒绝结帐 WooCommerce
- c# - 在 ASP.NET Core 2.1 中没有为此 DbContext 配置数据库提供程序
- android - MPAndroidChart 分组栏不是从左侧开始
- jboss - jbpm & drools 工作台与日食。为什么这两者都存在?
- javascript - JSON.parse() 永远不会完成