我经常想将 CSV 文件快速加载到 Oracle 数据库中。 CSV (Unicode) 在装有 Oracle InstantClient 19.5 版的机器上,Oracle 数据库是 18c 版。
我正在寻找一个命令行工具,它可以在不指定列结构的情况下上传行。
我知道我可以将 sqlldr
与 .ctl
文件一起使用,但是我需要定义列类型等。我对一个工具很感兴趣 从 CSV 中的数据中找出列属性本身(或对所有列使用通用默认值)。
我必须摄取的 CSV 始终包含一个标题行,相关工具可以使用该标题行来确定表中的适当列。
最佳答案
从 Oracle 12c 开始,您可以在 express 模式下使用 sqlldr
,因此您不需要任何控制文件。
In Oracle Database 12c onwards, SQLLoader has a new feature called express mode that makes loading CSV files faster and easier. With express mode, there is no need to write a control file for most CSV files you load. Instead, you can load the CSV file with just a few parameters on the SQLLoader command line.
一个例子
假设我有一张这样的 table
CREATE TABLE EMP
(EMPNO number(4) not null,
ENAME varchar2(10),
HIREDATE date,
DEPTNO number(2));
然后是一个看起来像这样的 csv 文件
7782,Clark,09-Jun-81,10
7839,King,17-Nov-81,12
我可以在快速模式下使用 sqlldr :
sqlldr userid=xxx table=emp
您可以在本白皮书中阅读有关快速模式的更多信息
关于database - 在不指定列详细信息的情况下从命令行将 CSV 文件加载到 Oracle 数据库的新表中的简便方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63592133/