在Linux中使用终结器或终端从oracle表中导出数据有没有更快的方法?

toiithl6  于 2022-11-28  发布在  Oracle
关注(0)|答案(1)|浏览(101)

我有一个包含20亿条记录的表,我想将该数据导出到CSV文件中。我曾尝试在SQL Developer中导出数据,但它花费了太多时间,我必须运行多个命令才能获得所需的行。有没有更快的方法使用终端导出数据或其他方法导出20亿条记录?

siv3szwd

siv3szwd1#

可以使用SQL Developer CLI工具'sqlcl'卸载数据。

# fire up the database
docker compose up oracle -d
 
# install
curl -o - https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip | sudo tar -C /usr/local -xf -
sudo chmod 755 /usr/local/sqlcl/bin/sqlcl
alias sqlcl='/usr/local/sqlcl/bin/sql'

alias sqlcl
alias sqlcl='/usr/local/sqlcl/bin/sql'

sqlcl app_schema/secret@localhost/XEPDB1

SQLcl: Release 22.3 Production on Tue Nov 22 11:44:11 2022

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

app_schema@XEPDB1> create table demo (x number, y char(1), z varchar2(1000));

Table DEMO created.

Elapsed: 00:00:00.022
app_schema@XEPDB1> insert into demo select rownum, 'N', lpad('x', 1000, 'x') from xmltable('1 to 10000');

10,000 rows inserted.

Elapsed: 00:00:00.300
app_schema@XEPDB1> commit;

Commit complete.

Elapsed: 00:00:00.011
app_schema@XEPDB1> set loadformat csv
app_schema@XEPDB1> unload demo

format csv

column_names on
delimiter ,
enclosures ""
encoding UTF8
row_terminator default

** UNLOAD Start ** at 2022.11.22-11.46.56
Export Separate Files to /Users/USER/code/projects/unload
DATA TABLE DEMO
File Name: /Users/USER/code/projects/unload/DEMO_DATA_TABLE_1.csv
Number of Rows Exported: 10000
Elapsed: 00:00:00.486
Total Elapsed: 00:00:00.491
** UNLOAD End ** at 2022.11.22-11.46.56
app_schema@XEPDB1> !wc -l /Users/USER/code/projects/unload/DEMO_DATA_TABLE_1.csv
10001 /Users/USER/code/projects/unload/DEMO_DATA_TABLE_1.csv

# try with different values to speed up the process.
app_schema@XEPDB1> show arraysize
arraysize 100

祝你好运!

相关问题