在 PDI / Spoon 中复制/移动文件会产生“不是文件”错误
Posted
技术标签:
【中文标题】在 PDI / Spoon 中复制/移动文件会产生“不是文件”错误【英文标题】:Copy/Move files in PDI / Spoon yields 'is not a file' error 【发布时间】:2015-12-31 11:00:11 【问题描述】:我正在尝试自动每周生成数据库。作为此过程的第一步,我需要从网络位置M:\
获取一组文件。流程如下:
-
从我的本地文件夹 (
REMOVE_OLD_FILES
) 中删除任何可能剩余的旧源文件。
使用正则表达式 (GET_FILES
) 获取所需文件的名称。
将文件从网络位置复制到我的本地文件夹以供进一步处理 (COPY/MOVE FILES
)
第 3 步是我遇到麻烦的地方,我经常收到以下错误:
Error processing files. Exception : org.apache.commons.vfs.FileNotFoundException: Could not read from "file:///M:/FILESOURCE/FILENAME.zip" because it is a not a file.
但是,当我手动定位网络位置上的“错误”文件并尝试打开或复制它时,没有问题。如果我随后重新运行 Spoon 作业,则此文件不会出现错误(尽管下一个文件可能会导致错误)。
到目前为止,我已经验证了第 1 步和第 2 步运行正确:更具体地说,从第 2 步返回的文件名中没有错误。
显然,我宁愿不必先手动打开所有文件以确保 Spoon 可以正确复制它们。有谁知道可能导致这种行为的原因是什么?
为完整起见,以下是在COPY/MOVE FILES
步骤中选择的参数。
【问题讨论】:
【参考方案1】:我遇到了不同客户的相同问题,最后我尝试了一些基本方法并得到了解决。它也可能对您的情况有所帮助。
另外,其他用户也可以遵循此规则。
试试这个:使用 Spoon Job“创建文件夹”创建所有必需的文件夹,并在创建文件夹后从您的工作或转换中停用/删除这些跃点。
这是因为,您用来删除文件的用户未被识别为 Windows 用户。文件夹到位后,您可以从作业中删除“创建文件夹”步骤。
【讨论】:
【参考方案2】:文件路径错误。如果您在 Windows 环境中运行 spoon,您应该使用 Windows 格式的文件路径。尝试从
"file:///M:/FILESOURCE/FILENAME.zip"
到
"M:\FILESOURCE\FILENAME.zip"
顺便说一句,只有当 M: 是机器中的实际驱动器时,它才会起作用。如果你想访问网络中的文件,你应该使用共享文件夹的网络路径,这样:
"\\MachineName\M$\FILESOURCE\FILENAME.zip"
或
"\\MachineName\FILESOURCE\FILENAME.zip"
如果您尝试访问网络安装驱动器中的文件,它将无法正常工作。
【讨论】:
以上是关于在 PDI / Spoon 中复制/移动文件会产生“不是文件”错误的主要内容,如果未能解决你的问题,请参考以下文章
spoon(kettle)连接Access各种踩坑之避坑指南
在哪里下载 sun.jdbc.odbc.JdbcOdbcDriver(尝试将输出 csv 从 Spoon 连接到 SSMS)