Какой самый быстрый способ создания CSV-файлов из таблиц базы данных Oracle? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь перенести некоторые таблицы Oracle DB в облако (Snowflake), и мне интересно, каков наилучший способ создания CSV-файлов из таблиц.

У меня около 200 таблиц и несколько таблиц более 30 миллионов записей. Я хочу, чтобы объем данных

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Таким образом, я нахожусь в сценарии, чтобы быстро получить CSV-форму экспорта 300 ГБ oracle db и сохранить ее в S3 для анализа Spark / Hive, спул очень медленный, SQL-разработчик очень медленный. Хорошо, что дальше?

https://github.com/hyee/OpenCSV

Супер быстро.

Другое быстрое решение, хотя я думаю, что оно медленнее, чем выше, будет использовать Spark напрямую:

query = "(select empno,ename,dname from emp, dept where emp.deptno = dept.deptno) emp"
empDF = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:oracle:thin:username/password@//hostname:portnumber/SID") \
    .option("dbtable", query) \
    .option("user", "db_user_name") \
    .option("password", "password") \
    .option("driver", "oracle.jdbc.driver.OracleDriver") \
    .load()
empDF.printSchema()
empDF.show()

# Write to S3
empDF.write().format(“orc/parquet/csv.gz”).save(“s3://bucketname/key/”)

Конечно, вы можете перераспределить и выполнить некоторые другие оптимизации.

0 голосов
/ 24 января 2019

1) Исходя из размера необработанного файла, лучше использовать файл RAW DB.

2) Если это не вариант, используйте сценарий оболочки (относительно быстрее utl_file) Пример сценария

export ORACLE_HOME=<Oracle home path>
export PATH=$PATH:$ORACLE_HOME/bin
sqlplus -s user1/user1<<!
Spool on
set heading off
SET FEEDBACK OFF
set wrap off
set colsep ,
SET LINESIZE 200
set trims on
Spool /tmp/<Yourfilename>.csv
select 'col1','col2' from dual;
select col1,col2 from tab1;
.
.
.
.
.
.
.
.


Spool off
EXIT

3) Используйте utl_file для создания, как это было предложено одним из предыдущих пользователей https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:88212348059

С уважением, Фейсал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...