使用shell脚本

时间:2017-11-10 12:41:00

标签: mysql oracle shell csv

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

请告诉我如何继续

以下是脚本的片段

#!/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

由于

2 个答案:

答案 0 :(得分:1)

BCP是一个SQL Server的东西。

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

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

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

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

答案 1 :(得分:0)

我不确定在说“批量复制”时你究竟意味着什么,但可能你应该使用Oracle SQL * Loader。它是批量加载到Oracle DB中的标准工具,它也可以与CSV文件一起使用。

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