我想在Load data Infile中使用变量作为文件名.我运行以下代码:
Set @d1 = 'C:/Users/name/Desktop/MySQL/1/';
Set @d2 = concat( @d1, '20130114.txt');
load data local infile @d2 into table Avaya_test (Agent_Name, Login_ID,ACD_Time);
Run Code Online (Sandbox Code Playgroud)
不幸的是在运行之后,如下所示的提交有一个错误:"错误代码:1064.你的SQL语法中有错误......"
变量"@ D2"在此代码中带下划线,因此表示此错误是由此变量引起的.
你能帮我解决一下如何在LOAD DATA @variable infile中正确定义文件名变量吗?
谢谢.
小智 5
一般来说,不能直接使用,但可以使用临时文件。
该过程类似于使用组合 PREPARE-EXECUTE。请注意,您不能将 PREPARE 与 LOAD DATA INFILE 一起使用,因此您需要一个临时文件。
以下是如何读取具有今天日期的文件的示例:
SET @sys_date = CURRENT_DATE();
SET @trg_file = CONCAT("LOAD DATA INFILE '/home/data/file-",@sys_date, "' INTO TABLE new_data FIELDS TERMINATED BY ' ';");
SELECT @trg_file INTO OUTFILE '/tmp/tmp_script.sql';
SOURCE /tmp/tmp_script.sql;
Run Code Online (Sandbox Code Playgroud)
警告:你不能用 mysql 覆盖文件,因此临时文件不能存在。如果你想自动化前面的例子,这是一个严重的问题。