【发布时间】:2014-05-14 09:51:26
【问题描述】:
我已经搜索了几个小时没有真正的解决方案。
我想设置一个正在进行的任务(每晚)。我在服务器 1 上的 Teradata 数据库中有一个表。每天晚上我都需要将整个表从这个 teradata 实例复制到我的具有 MySQL 5.6 的开发服务器(服务器 2)。
如何将整个表格从服务器 1 复制到服务器 2?
我尝试过的事情: 1)从teradata服务器1中选择表x中的所有数据到ResultSet中。通过preparedStatement插入mysql。但这太慢了。另外我不知道如何删除表并在每晚使用来自 teradata 服务器的模式重新创建它。
有什么帮助吗?
【问题讨论】:
-
你试过 csv 吗? Teradata 可以转储 csv 文件,而 MySQL 加载数据 infile 非常有效。假设您没有任何二进制数据类型或其他特定于供应商的怪事,它应该很简单。你在什么操作系统上?如果在 linux 上,您可以运行 Teradata 脚本并从同一个 cron 作业中删除 MySQL 表。
-
我现在使用 csv 导出,但它是一个手动过程。我需要自动化它。我发现的一个挑战是 teradata 表中的日期是
mm/dd/yyyy,当我将它导入 mysql 时,它变成了0000-00-00。不知道如何解决。我在 Windows 服务器上。 -
我对 Windows 上相当于 cron 作业的了解不多。但是您可以在导入 MySQL 的日期字段上使用 date_format 来指定正确的格式。我曾经对无法在不同数据库系统之间干净地转储/恢复的空间数据做过的事情是在 MySQL 中建立一个黑洞数据库,将 csv 加载到其中,使用 load data infile 并使用触发器来转换数据成 MySQL 几何类型。这避免了必须加载中间表然后对其进行转换(以及随之而来的所有浪费空间)。离墙,也许吧。 :-)
-
要导出 CSV,您应该使用使用 DELIMITED 的 TPT 导出。并且 Teradata 中的 DATE 没有格式,这仅在将其转换为字符串时应用。这可以使用 FORMAT 命令轻松修改。