2015-12-05 71 views
2

我想知道如果我可以从平面文件加载数据到多个表(需要多个插入)使用存储过程。MySQL导入数据。我可以导入存储过程吗?

我有一个存储过程已经

CREATE PROCEDURE `Insert_Hockey` (cardyear YEAR, fname VARCHAR(45), lname VARCHAR(45), brand VARCHAR(45), card_id VARCHAR(8)) 
BEGIN 
    /* Create another generic 'Item' in Items table */ 
    INSERT INTO Items(category_id) VALUES (2); 

    /* Need to use the AUTO_INCREMENTED item_id from Items below so use LAST_INSERT_ID */ 
    INSERT INTO Hockey_Cards VALUES(LAST_INSERT_ID(), cardyear, fname, lname, brand, card_id); 
END 

现在说我有一个曲棍球卡的电子表格一组数据。我可以导出到制表符分隔的格式。我想从文件加载数据,但使用制表符分隔的数据作为存储过程的参数。有这样的可能吗?如果不是的话,那么在这样的情况下,你将如何以简单的方式导入数据,插入对先前的插入有依赖性。

我想在我的数据库中创建一些存储过程/事务(我不知道是否有区别)。在某些情况下,我使用常规表 - >特定表格类型的模式,其中特定表格具有指向常规表格的外键。因此,插入到特定项中需要事先插入常规中,获取AUTO_INCREMENTED主键并将其用于插入“特定”表中。

回答

0

我不知道,你可以做的正是你要问什么,但几个选择,可以帮助:

  • 为什么不使用INSERT触发器?所以你需要一个表格来导入你的数据,并在那张表上插入一个触发器。每个记录都应该触发触发器,所以从触发器中调用SP应该可以得到你想要的。

  • INSERT DATA INFILE的语法允许一些非常复杂的导入代码。鉴于您向我们展示的相对简单的SP代码,我希望您能够让INSERT DATA INFILE为您自己完成此操作,而无需SP。代码将比SP更复杂,但它肯定应该是可能的。