我正在尝试从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;
但是它会引发无效的数据错误。
然后我尝试使用
在语法中强制转换createDateCOPY FROM &user_name/&password@&database
REPLACE x_source_table USING
SELECT cast(createDate as Date) as createDate
FROM source_table;
尝试仅复制createDate但它也不起作用。
答案 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加载它?
至少你有一些选择。让我们知道你最终做了什么。