【问题标题】:Bulk Copy from a csv file to OracleDB using shell script使用 shell 脚本从 csv 文件批量复制到 OracleDB
【发布时间】:2017-11-10 12:40:59
【问题描述】:

我正在尝试编写一个 shell 脚本,该脚本从 csv 文件中提取数据并将其批量复制 (bcp) 到 oracle db。 我可以写一个 shell 脚本,但不确定 sql bcp 是如何工作的。

请告诉我如何进行

这是脚本的sn-p

#!/bin/bash
echo "Now processing step: LOAD_"
DB_CONNECT="USER/PASS@TESTDB"
SPOOLFILE=/home/log.txt
echo "Now processing step:" $DB_CONNECT
sqlplus -s ${DB_CONNECT} <<EOF
spool ${SPOOLFILE}
file="/etc/hosts"
if [ -f "$file" ]
  then
echo "$file found."
TRUNCATE TABLE ;
else
echo "$file not found."
fi

假设我的文件是具有以下数据的 csv 文件

1,2,3,4
5,6,7,8
10,11,12,13

谢谢

【问题讨论】:

    标签: mysql oracle shell csv


    【解决方案1】:

    BCP 是 SQL Server 的东西。

    你现在在甲骨文的土地上。

    但是,如果您想使用脚本从 CSV 加载表格,我们确实有一些工具可以帮助您。

    SQL*Loader 非常适合处理大量数据 - 数百万行,没问题。而且它很灵活,您可以将输入流中的数据定义/映射到表中。它是 Oracle 客户端的一部分——因此您需要在您的机器上安装一个 $ORACLE_HOME 才能使用它。

    如果您有一个 CSV,其中列以与表相同的顺序匹配,并且只有几千行,您也可以只使用 use the LOAD command in SQLcl。它是 SQL Developer 的一部分(在 /bin 目录中),可以单独下载。您需要一个 JRE 来运行它。

    【讨论】:

      【解决方案2】:

      我不确定您所说的“批量复制”的确切含义,但您可能应该使用 Oracle SQL*Loader。它是批量加载到 Oracle DB 的标准工具,也可以处理 CSV 文件。

      文档:https://docs.oracle.com/database/122/SUTIL/oracle-sql-loader.htm#SUTIL3311

      【讨论】:

        猜你喜欢
        • 2013-09-11
        • 2023-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多