使用sqlloader nodeJS将CSV文件大容量插入Oracle数据库



我正在尝试使用oracle数据库上的nodeJS加载csv文件。

来自此处的文档https://docs.oracle.com/cd/B19306_01/server.102/b14215/ldr_concepts.htm通过实现以下内容,似乎可以加载整个csv文件并将其传递给Oracle。

load data
infile 'example.dat'  "str '|n'"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
col2 char(7))

数据看起来像

hello,world,|
james,bond,|

然而,当我在nodeJS上使用oracledb库实现它时,它会抛出ORA-00900 invalid SQL statement错误

下面是我如何实现查询的。

oracledb.getConnection(
{
user: userId,
password: password,
connectString: `(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ${host})(PORT = ${port}))(CONNECT_DATA = (SID = ${sid})))`
},
function (err, connection) {
if (err) {
errorHandler(err);
return;
}
connection.execute(
query,
function (err, result) {
if (err) {
errorHandler(err);
oracleFunctions.connection.doRelease(connection, errorHandler);
return;
}
successHandler(result);
oracleFunctions.connection.doRelease(connection, errorHandler);
});
});

我的查询如下

LOAD DATA
infile 'pathtothefile.csv' "str 'n'"
INTO TABLE e1_000090000_ADS_R_PPLaps
FIELDS TERMINATED BY ',' optionally enclosed by '"'

我做错了什么?

您将SQL*Loader实用程序(Oracle为数据加载提供的单独二进制文件)与实际有效的SQL语法混合在一起。不能只将SQL*Loader参数作为SQL语句传递,它们不是!如果你想通过Node.js加载一个文件,你必须读取文件,解析内容,并将其转换为实际的INSERT INTO语句,这正是SQL*Loader为你所做的。

最新更新