Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用sqlloader nodeJS将CSV文件批量插入到Oracle数据库_Node.js_Oracle_Csv - Fatal编程技术网

Node.js 使用sqlloader nodeJS将CSV文件批量插入到Oracle数据库

Node.js 使用sqlloader nodeJS将CSV文件批量插入到Oracle数据库,node.js,oracle,csv,Node.js,Oracle,Csv,我正在尝试在oracle数据库上使用nodeJS加载csv文件 从这里的文档来看,似乎可以通过实现以下功能加载整个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

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

从这里的文档来看,似乎可以通过实现以下功能加载整个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无效SQL语句错误

下面是我如何实现查询的

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 'path\to\the\file.csv' "str '\n'"
INTO TABLE e1_000090000_ADS_R_PPLaps
FIELDS TERMINATED BY ',' optionally enclosed by '"'

我做错了什么?

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

这真的是SQL Loader所做的吗?因为我听说它比插入快得多。SQL*Loader使用批量插入和加载数据的组合,这确实比传统插入快得多。这两项功能都是数据库内核的一部分,用户通常可以访问。但是,对于Node.js,驱动程序似乎还不支持:@gvenzl,您是否有任何示例可以将sql loader与oracledb Node js一起使用。正如@AmitKumar所说,sql*loader本身是一个二进制文件,而不是sql语法。因此,除了调用二进制代码外,它不能在Node.js代码中使用。有关示例,请查看。