Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
Java 将表从teradata复制到mysql_Java_Mysql_Sql_Teradata - Fatal编程技术网

Java 将表从teradata复制到mysql

Java 将表从teradata复制到mysql,java,mysql,sql,teradata,Java,Mysql,Sql,Teradata,我找了好几个小时,没有找到真正的解决办法 我想设置一个正在进行的任务(everynight)。我在服务器1上的Teradata数据库中有一个表。每天晚上,我都需要将整个表从这个teradata实例复制到我的开发服务器(服务器2),该服务器具有MySQL 5.6 如何将整个表从服务器1复制到服务器2 我尝试过的事情: 1) 从teradata server 1将表x中的所有数据选择到ResultSet中。通过preparedStatement插入mysql。但这太慢了。此外,我也不知道如何删除表并

我找了好几个小时,没有找到真正的解决办法

我想设置一个正在进行的任务(everynight)。我在服务器1上的Teradata数据库中有一个表。每天晚上,我都需要将整个表从这个teradata实例复制到我的开发服务器(服务器2),该服务器具有MySQL 5.6

如何将整个表从服务器1复制到服务器2

我尝试过的事情: 1) 从teradata server 1将表x中的所有数据选择到ResultSet中。通过preparedStatement插入mysql。但这太慢了。此外,我也不知道如何删除表并在每晚使用teradata服务器上的模式重新创建它


有什么帮助吗?

有几种方法可以做到这一点

注意:这些可能是旧方法,只是试图让您思考如何在当前环境中做到这一点。另外,我不熟悉您的数据敏感度和权限等

一种是通过CSV文件将teradata转换为MySQL,请参见下面的示例和链接。(这些可能是较旧的帖子,但基本想法是您需要的)

从teradata导出:

创建外部表 database_name.table_name(待创建)SAMEAS database_name.table_name(已存在,要导出其数据) 使用(DATAOBJECT('C:\Data\file\u name.csv')) 分隔符“|”REMOTESOURCE“ODBC”)

编辑:如果CreateExternalTable无法运行,那么您可能必须首先使用java来提取数据,然后再组织数据……在获取数据时模仿当前的方法(不管它如何工作)。谷歌富与这个方便的链接

(dnoeth)以下建议:TPT以分隔格式导出(这看起来很麻烦……但可能是唯一的方法),因此这里有一个链接讨论它:

导入到mysql(不要删除表,只需从表中删除):

mysqlimport——忽略行=1\ --以=、结尾的字段\ --局部u根\ -p数据库\ TableName.csv

您需要在这两种环境中安排此操作,这可能是一个巨大的麻烦

现在我看到您使用Java,在Java中,您可以通过创建一个简单的调度任务(任何可以用于调度任务的工具)。您可能需要进行试错运行,并且您的数据可能会成为问题,具体取决于它是什么。它的分隔方式、是否有标题等

然后您可以调用上述示例的变体。通过Java

下面是一个java示例:

还有一个:

另一个:

因此,基本思路是从teradata导出csv,这应该很简单

使用java遍历文件服务器来获取文件(可能需要在某个地方进行FTP),您可能需要考虑这个……/P> 使用Java和UDF或一些可以迭代CSV(内容)并导入MySQL(自己编写一个或在“物联网”上找到一个)的包来使用CSV文件

编辑:这里是关于使用java调度任务的信息以及要查看的链接

检查一下,这样就可以


您尝试过csv吗?Teradata可以转储csv文件,MySQL加载数据填充非常有效。它应该很简单,假设您没有任何二进制数据类型或其他特定于供应商的奇怪之处。你在用什么操作系统?如果在linux上,您可以运行Teradata脚本并从同一个cron作业中删除MySQL表。我现在使用csv导出,但这是一个手动过程。我需要把它自动化。我发现的一个挑战是teradata表中的日期是
mm/dd/yyyy
,当我将其导入mysql时,它会变成
0000-00-00
。我不知道如何解决这个问题。我在windows服务器上。我对windows上的cron作业的等效性了解不多。但您可以在导入到MySQL时在date字段上使用date_格式来指定正确的格式。我曾经对空间数据做过一件事,它不能在不同的数据库系统之间完全转储/恢复,那就是在MySQL中建立一个黑洞数据库,将csv加载到该数据库中,使用load data Infle并使用触发器将数据转换成MySQL几何体类型。这避免了加载中间表然后对其进行转换(以及由此产生的所有浪费空间)。可能是从墙上掉下来的。:-)要导出CSV,应使用TPT导出,并使用分隔符。Teradata中的日期没有格式,这只是在将其转换为字符串时应用的。这可以很容易地使用FORMAT命令进行修改。+1是我的use csv建议的一个更完整的版本。我们都必须咕哝着完成这类事情。我有两个关于医生信息的项目,使用了各种各样的feed-pull和scriber,导入失败是因为文本字段中的坏字符破坏了导入过程。它可能会变得很糟糕……它永远不会完美。OP很幸运,它只有一个表:)顺便说一句,Teradata中没有创建外部表:)@dnoeth。还有什么?要导出CSV,可以使用分隔格式的TPT导出。