database - 在不指定列详细信息的情况下从命令行将 CSV 文件加载到 Oracle 数据库的新表中的简便方法

标签 database oracle csv import

我经常想将 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

您可以在本白皮书中阅读有关快速模式的更多信息

Express Mode in SQLLDR

关于database - 在不指定列详细信息的情况下从命令行将 CSV 文件加载到 Oracle 数据库的新表中的简便方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63592133/

相关文章:

MySQL 性能 - 字符串与整数

r - 如何使用 tcltk 将数据框以 CSV 格式保存到用户选择的位置

sql - 值列表如表

php - 存在关系的空 mysql 数据库

database - 查询 Postgresql 管理员权限

oracle - 在 case 语句中返回 bool 值

Oracle - 向角色授予创建作业权限

Oracle:将 varchar2 字段中的 xml 实体转换为 utf-8 字符

Python到C的转换,将csv的列读入数组

shell - 比较文件并更新匹配字符串 awk/sed/diff/grep/csv