Sql 加上如何复制带时间戳的 table

Sql Plus how to copy a table with timestamp

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

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 是一个时间戳。

我试图通过以下方式将数据复制到我的 table:

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 但它也不起作用。

由于 COPY 命令不支持 TIMESTAMP 数据类型,因此您无法使用 COPY。我发现了这个:"The COPY command is not being enhanced to handle datatypes or features introduced with, or after Oracle8. The COPY command is likely to be made obsolete in a future release. "。这是 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;

或者可以使用 export/import?或者获取源 table 的 csv 并使用 sqlldr 加载它?

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