gpt4 book ai didi

azure - SQL中的文件存在函数

转载 作者:行者123 更新时间:2023-12-03 00:08:45 25 4
gpt4 key购买 nike

我正在 USQL 中进行一个简单的测试,以检查文件是否存在,然后基于该文件执行合并操作。但是,我似乎无法正确理解这一点。您能帮我解决这个问题并让我知道哪里出了问题吗?

DECLARE @InputFile1 string = "/MergeTest/FINAL/Check1.csv";
DECLARE @InputFile2 string = "/MergeTest/STAGING/Test-{*}.json";
DECLARE @OutputFile1 string = "/MergeTest/FINAL/Check1.csv";

IF (FILE.EXISTS(@InputFile1))
THEN
@Final = EXTRACT [ID] int,
[Name] string,
[City] string,
[Country] string
FROM @InputFile1
USING Extractors.Csv(skipFirstNRows:1);
END;

@Delta = EXTRACT [ID] int,
[Name] string,
[City] string,
[Country] string
FROM @InputFile2
USING new JsonExtractor("$.DEP[*]");

下面的代码在 IF 条件下不起作用。我收到错误:@FileExists 已声明为标量变量。如果这是错误的实现方法,那么正确的方法是什么?

@FileExists = SELECT (FILE.EXISTS(@InputFile1)) AS exists_good FROM (VALUES (1)) AS T(dummy);

IF ####@FileExists THEN
@result = SELECT * FROM @Delta
UNION ALL
SELECT * FROM Final AS T1
ANTISEMIJOIN (SELECT * FROM @Delta) AS T2
ON T1.[ID] == T2.[ID];
ELSE
@result = SELECT * FROM @Delta;
END;

OUTPUT @result
TO @OutputFile1
USING Outputters.Csv(outputHeader:true);

谢谢,苏尼莎

最佳答案

只需这样写即可:

IF FILE.EXISTS(@InputFile1) THEN ...

当您使用 SELECT 分配给它时,这基本上是一个行集,不能像标量变量一样对待。

我还在您的示例中注意到 @inputFile1@outputFile1 具有相同的文件名。我确信这会引起问题。确保它们在您的实际示例中有所不同。

关于azure - SQL中的文件存在函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com