Sql Plus如何使用时间戳复制表

时间:2016-08-19 13:57:57

标签: sqlplus

我正在尝试从SqlPlus中的远程数据库复制数据。 我有一个像这样的源表

table_name: source_table

seqId  |   createDate 

1   | 10-SEP-02 02.10.10.123000 AM

2   | 10-SEP-01 02.10.10.123000 AM

seqId是一个数字,createDate是一个时间戳。

我尝试将数据复制到我的表格中:

COPY FROM &user_name/&password@&database
REPLACE x_source_table USING
SELECT * 
FROM source_table;

但是它会引发无效的数据错误。

然后我尝试使用

在语法中强制转换createDate
COPY FROM &user_name/&password@&database
REPLACE x_source_table USING
SELECT cast(createDate as Date) as createDate
FROM source_table;

尝试仅复制createDate但它也不起作用。

1 个答案:

答案 0 :(得分:0)

由于COPY命令不支持TIMESTAMP数据类型,因此您无法使用COPY。我发现了这一点:" COPY命令没有得到增强,无法处理Oracle8引入的数据类型或功能。 COPY命令可能在将来的版本中过时。 &#34 ;.以下是10g的一些文档:https://docs.oracle.com/cd/B19306_01/server.102/b14357/apb.htm

您必须寻找替代方法。你能做到这一点还是一个变化:

truncate x_dest_table;
insert into x_dest_table select <column_list> from x_source_table
-- or from x_source_table@dblink if you have a database link;
commit;

或者可能使用导出/导入?或者获取源表的csv并使用sqlldr加载它?

至少你有一些选择。让我们知道你最终做了什么。