Oracle Table数百万行,拉入并保存到文件中

时间:2011-10-05 14:03:24

标签: sql oracle

我有oracle表,拥有超过3000万条记录,我需要将所有数据存入文件并存储它。任何人都可以建议我最简单的方法是什么,我需要什么样的文件用于存储所有数据。如果有一种方法,我可以将数据放入多个文件,也可以工作..你可以告诉我手动或编程方法。谢谢

3 个答案:

答案 0 :(得分:1)

从Oracle 10g开始,您可以使用ORGANIZATION EXTERNAL创建一个新表,并将原始表中的INSERT记录添加到其中。来自Oracle 10gR2文档的See this example

答案 1 :(得分:1)

存储数据的最简单格式之一是逗号分隔值(.csv)。只要在解析分隔符时知道分隔符,就可以将分隔符定义为任何字符(逗号是默认值)。 (例如,〜字符将是一个很好的决定)。通常,这种格式可以在像Excel这样的电子表格程序中轻松打开。它也可以很容易地解析,重新插入到您选择的数据库中。

要从oracle导出,您可以执行以下操作:

spool backup.csv;
select column1||','||column2||','|| ... from table; 
spool off;

导出后,这是一个用于在perl中使用csv文件的资源:

http://perlmeme.org/tutorials/parsing_csv.html

Apache commons有一个很棒的java库:

http://commons.apache.org/sandbox/csv/apidocs/org/apache/commons/csv/CSVParser.html

答案 2 :(得分:1)

问汤姆有答案http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:88212348059

此外,你可以在SQL * Plus中通过使用spool进行选择(来自shell脚本)

sqlplus /nolog <<EOF
conn /as sysdba
set pagesize 0 heading off feedback off verify off echo off trimspool on
spool test.log
select 'dsmc inc "'||file_name||'">>hot_WISDOM_$BCKNAME.log' from dba_data_files
 where rownum<5;
spool off;
exit
EOF

有关http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:25323432223677

的假脱机内容的更多信息

该页面是我在上面找到该代码段的地方。

您需要使用您的用户名/密码替换连接详细信息。