【问题标题】:Batch file pass xml file contents to sqlplus批处理文件将xml文件内容传递给sqlplus
【发布时间】:2017-10-09 15:29:01
【问题描述】:

我有想要通过使用 sqlplus 的批处理文件过程上传到 Oracle DB 的 XML 文件。 我正在像这样遍历我的 XML 文件:

for %%f in (%FILE%) do (
call :load_file %%f
)

%FILE% 也可能是一个问题,不是 100% 确定的。这个变量的设置如下:

set FILE=%CURRENT_DIRECTORY%\File1_*.xml

..并且应该提取任何与模式匹配的文件。

在 :load_file 中,我需要将实际文件内容(作为字符串)传递给 sqlplus。我有以下内容,其中 %1 是文件名本身。我实际上需要将 XML 文件内容传递给我的 sqlplus 命令,以便将内容实际插入 Oracle DB。

:load_file
set FILECONTENTS=?    

sqlplus -S %DB_USER%/%DB_PASSWORD%@%DB_SID% @insert_xml_into_db.sql %1 %FILECONTENTS%

我可能也在寻找/思考这个错误。任何建议,将不胜感激。有没有更简单的方法?

【问题讨论】:

标签: oracle batch-file plsql sqlplus


【解决方案1】:

我认为读取整个 XML 文件并不是一个好主意,但因为您还询问如何从文件中读取行到 sql 服务器。这个例子怎么样:

文件(Dark.txt):

SELECT ('ABC') Row1 FROM Dual;
SELECT ('DEF') Row2 FROM Dual;

批处理脚本(Dark.bat):

@echo off

SET fileA=Dark.txt
SET USER=userName
SET PASSWORD=myPassword
SET DATABASE=myDatabase

for /f "tokens=*" %%a in (%fileA%) do (
    echo %%a | sqlplus %USER%/%PASSWORD%@%DATABASE%
)

pause

【讨论】:

  • 这是个好主意,但是我真的需要将整个文件内容传递给 sqllite 调用,而不是逐行传递。我上面的评论是关于基本上用文件的内容逐行构建脚本字符串变量,然后将整个变量传递给 sql 调用。这似乎也不可能。
猜你喜欢
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 2017-10-19
  • 2019-05-12
  • 2010-09-06
相关资源
最近更新 更多