创建MySQL存储过程以将文件添加到现有表的末尾

时间:2015-07-15 17:11:20

标签: mysql stored-procedures

我正在尝试创建一个存储过程,允许我输入文件,年份和字符串,并将其添加到MySQL中现有表的末尾。但是,当我尝试调用程序时,它不会将输入文件识别为FROM子句中的变量。有没有人有任何纠正这个问题的技巧?我是创建SQL程序的新手,但已经研究过动态SQL,并且想知道这是否可以替代?在此先感谢您的帮助,我很乐意发布任何其他信息。

源文件列是ACS_Code和Descriptive_Title, 输出表列为Year,Data_Profile,ACS_Code和Descriptive_Title。

> dfy
p1 p2 p3 p4
c1  a2 c3 c4
d1  a1 d3 d4
e1  a3 e3 e4
f1  a2 f2 f4
g1  a1 g2 g3
h1  a3 h2 h3

这是调用命令和错误信息:

DELIMITER //
DROP PROCEDURE IF EXISTS `padata`.`Load_ACS_Data_Profile_Code_Def`//

CREATE PROCEDURE `padata`.Load_ACS_Data_Profile_Code_Def(IN file VARCHAR(255), IN Data_Profile Varchar(50), IN Year INT) # Input("Social","Economic","Housing",or "Demographic_Housing") for Dataprofile
BEGIN

INSERT INTO padata.ACS_5yr_Selected_Code_Definitions( 
        Year, 
        Data_Profile,
        ACS_Code,
        Descriptive_Title)
SELECT
        Year AS Year,
        Data_Profile AS Data_Profile,
        a.ACS_Code AS ACS_Code,
        a.Descriptive_Title AS Descriptive_Title
FROM 
    `padata`.file a ;  #Where file is a parameter that is passed

END //
DELIMITER ;

1 个答案:

答案 0 :(得分:1)

什么是alloca,在我看来,您指的是操作系统上的文件。不要说它是输入文件。它是一个varchar(字符串)。

它当然不是db中的一个名为file的表。

存储的proc IN意味着你传入的参数如字符串,int类的东西。它不会打开从文件中读取的流。

修改

padata