Excel 做这个ETL工作的最佳方法是什么?
我用coulmns在excel中有一些数据,我需要将这些数据从excel迁移到Oracle中的一些表中。我如何以最佳和快速的方式实现这一点。?Excel 做这个ETL工作的最佳方法是什么?,excel,oracle,etl,Excel,Oracle,Etl,我用coulmns在excel中有一些数据,我需要将这些数据从excel迁移到Oracle中的一些表中。我如何以最佳和快速的方式实现这一点。? 我需要从单个excel文件加载Oracle中的5个表。这类任务是否有可用的工具?方法如下 假设你有两张这样的桌子 create table tabA (col_a number, col_b number); create table tabB (col_b number, col_c varchar2(10)); 您需要从a文件d:\file.csv
我需要从单个excel文件加载Oracle中的5个表。这类任务是否有可用的工具?方法如下 假设你有两张这样的桌子
create table tabA (col_a number, col_b number);
create table tabB (col_b number, col_c varchar2(10));
您需要从a文件d:\file.csv开始加载数据,如下所示:
col_a,col_b,col_c
10,99,"a"
20,999,"b c d"
您首先需要创建一个目录,然后构建一个包含CSV的表:
CREATE DIRECTORY dir_d AS 'D:\';
CREATE TABLE csvFile
(
Col_a VARCHAR2(4000),
Col_b VARCHAR2(4000),
Col_c VARCHAR2(4000)
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY dir_d
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
SKIP 1
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LRTRIM
MISSING FIELD VALUES ARE NULL
)
LOCATION('file.csv'));
现在,您可以使用SQL在表中插入数据,从CSV表开始,使用所需的所有逻辑;例如:
insert into tabA select col_a, col_b from csvFile;
insert into tabB select col_b, col_c from csvFile;
SQL> select * from tabA;
COL_A COL_B
---------- ----------
10 99
20 999
SQL> select * from tabB;
COL_B COL_C
---------- ----------
99 a
999 b c d
如果您只想将数据放入一个表中,可以使用sqldeveloper将数据导入表中,如下所示:Oracle的工具可以处理多表插入。如果您不想麻烦地构建适当的控制文件,可以首先使用您选择的工具将数据加载到暂存表中 然后,您可以从暂存表执行单个插入,或使用(?)语句:
insert all into table_a (cola, colb, colc) values (col_a, col_b, col_c)
into table_b (cola, colb, colc, cold) values (col_a, col_b, col_c col_d)
select col_a, col_b, col_c, col_d from staging_table;
或
全部插入
当col_a<1000时
进入表a(cola、colb、colc)值(COLU a、COLU b、COLU c)
当col_a在900到10000之间时
进入表b(cola、colb、colc、cold)值(COLU a、COLU b、COLU c COLU d)
其他的
进入表c(cola、colb、colc、cold)值(COLU a、COLU b、COLU c COLU d)
从暂存表中选择列a、列b、列c、列d;
使用条件insert,每个WHEN子句的计算结果为true时,将导致数据插入到指定的表中,而ELSE子句仅在没有其他选项适用时才起作用。您是否尝试过搜索?可能存在重复的WHERE子句。。。我看到的任何地方都可以将excel导入oracle,但这对我来说都不起作用,因为我需要将这些数据存储在不同的表中。为什么不呢?你不能按顺序插入表格吗?或者您需要从单个excel“表”加载多个表吗?是@Aleksej我需要从单个excel文件加载多个表。
insert all
when col_a < 1000 then
into table_a (cola, colb, colc) values (col_a, col_b, col_c)
when col_a between 900 and 10000 then
into table_b (cola, colb, colc, cold) values (col_a, col_b, col_c col_d)
else
into table_c (cola, colb, colc, cold) values (col_a, col_b, col_c col_d)
select col_a, col_b, col_c, col_d from staging_table;