gpt4 book ai didi

mysql infile无法访问子查询中的@user变量

转载 作者:行者123 更新时间:2023-11-29 21:35:39 25 4
gpt4 key购买 nike

我正在尝试读取 csv 文件并将行插入表中。当我分配值时,我可以毫无问题地插入它们。但是当我尝试使用 @user 变量时,相同的 sql 停止工作。

感谢所有帮助。

这有效:

LOAD DATA INFILE 'tmp/test.csv'

INTO TABLE T1

FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
( @var1 )
set create_timestamp = now(),
col1 = ( select max(id) from T2 where
col2 = 1234 );

这不起作用:

LOAD DATA INFILE 'tmp/test.csv'

INTO TABLE T1

FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
( @var1 )
set create_timestamp = now(),
col1 = ( select max(id) from T2 where
col2 = @var1 );

最佳答案

我怀疑子查询( select max(id) from正在执行之前将值分配给@var1

我真的很惊讶第一个例子竟然能起作用;我从未尝试过在 LOAD DATA 中运行子查询。

当您说“这不起作用”时,您的意思是加载数据抛出错误吗?或者您的意思是 LOAD DATA 成功完成,但出现意外结果?

在后一种情况下,我建议进行一个简单的测试,在 LOAD DATA 之前执行单独的 SET @var1 = 1234; 语句,然后看看会发生什么第一行。

如果抛出错误,则可能是在该上下文中不支持子查询。 (我们需要查阅 MySQL 引用手册,看看是否受支持。)

这是我的猜测。 1) 意外的操作顺序(将行中的值分配给 @var1 之前评估 @var1),或者 2)子查询在该上下文中无效。

<小时/>

编辑

根据MySQL引用手册5.7

http://dev.mysql.com/doc/refman/5.7/en/load-data.html

看起来 LOAD DATA 语句的上下文中支持子查询。

关于mysql infile无法访问子查询中的@user变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936553/

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