我有oracle表,拥有超过3000万条记录,我需要将所有数据存入文件并存储它。任何人都可以建议我最简单的方法是什么,我需要什么样的文件用于存储所有数据。如果有一种方法,我可以将数据放入多个文件,也可以工作..你可以告诉我手动或编程方法。谢谢
答案 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
的假脱机内容的更多信息该页面是我在上面找到该代码段的地方。
您需要使用您的用户名/密码替换连接详细信息。