MySQL导入数据。我可以导入存储过程吗?

时间:2015-12-05 19:00:50

标签: mysql sql stored-procedures

我想知道是否可以使用存储过程将平面文件中的数据加载到多个表中(需要多个插入)。

我已经有了一个存储过程

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主键并将其用于插入“特定”表中。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以完全满足您的要求,但有几种选择可能有所帮助:

  • 为什么不使用插入触发器?因此,您有一个导入数据表,以及该表上的插入触发器。每个记录都会触发触发器,因此从触发器调用SP可以得到你想要的结果。

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