2016-03-03 156 views
1

我正在将数据导入到使用MySQL的应用程序中。数据来自MS SQL。因为表名在MS SQL数据库中每个月都有变化,所以除了从其他表中获取数据之外,我们还使用存储过程来连接表名。使用存储过程将数据从MS Sql导入到MySQL

问题是,我们似乎失去了MS SQL端的PK标识符,所以我的MySQL数据库不会接收数据。我们应该使用视图吗?有没有办法在存储过程中保留PK身份。谢谢。

这里是我的问题的一个更好的解释: 1.主机数据库表名更改每个月(YYYYMMtablename) 2.需要从两个表 选择列3.国外数据库(MySQL的)需要像一个SELECT查询,b,c,d,来自表名 4.我无法改变我的应用程序的工作方式,但我可以对数据库进行更改。

回答

0

您可以在SQL Server和MySQL的插入语句中指定标识值。

MySQL允许你显式插入标识值,所以你实际上不需要IDENTITY_INSERT选项,换句话说它总是在MySQL中设置。 MySQL forums

对于MS SQL Server中,请仔细阅读SET IDENTITY_INSERT (Transact-SQL)文档。

+0

也许我还不够清楚。存储过程需要将pk信息覆盖,以便我的db可以接受它。我无法改变用于将数据导入My(MySql)db的java代码。不过谢谢。 –

+0

您只需将该列添加到检索数据并在插入中使用该值的select语句即可。如果你不能选择列,那么你需要神秘的魔力来猜测值;) –

+0

里卡多,是pk的列在存储过程中。但是由于数据操作(也从另一个表中检索信息),似乎pk列没有保留它作为pk的身份。 –

相关问题