2013-05-08 35 views
1

给出这两个表Rails的SQLSERVER模式转储不生成主键非身份PK的

CREATE TABLE [dbo].[ASTROLOGY_SIGN](
    [SIGN_ID] [int] NOT NULL, 
CONSTRAINT [PK_ASTROLOGY_SIGN] PRIMARY KEY NONCLUSTERED 


CREATE TABLE [dbo].[ACTIVITY_MASTER](
    [ACTIVITY_ID] [int] IDENTITY(1,1) NOT NULL, 
CONSTRAINT [PK_ACTIVITY_MASTER] PRIMARY KEY NONCLUSTERED 

轨生成以下两个项目在schema.rb

create_table "ASTROLOGY_SIGN", :id => false, :force => true do |t| 
create_table "ACTIVITY_MASTER", :primary_key => "ACTIVITY_ID", :force => true do |t| 

试图使用架构移动从sqlserver到Postgres,但这是给我的问题。有很多表格,而不需要手工编辑。

回答

1

朋友可能会帮助你... SQLServer中的表和它们的列作为连接关系有一些关系。看:

select * from INFORMATION_SCHEMA.TABLES join INFORMATION_SCHEMA.COLUMNS on 
INFORMATION_SCHEMA.TABLES.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME 

与所有这些信息,你可以编程一个小程序来转换这些。 我的意思是,你可以访问你的表和列此信息,然后在字符串替换它们,那就是在查询的Postgres 。看着字符串:

for(every table in INFORMATION_SCHEMA.TABLES) 
{ 
    string postgres_query = "create_table " + TABLE_NAME + ", :id => false, :force => true do |t|" 
    exec(postgres_query) 
} 

然后执行它为每个表为数据中心(postgres)。当然你必须优化它到你想要的东西。你知道这是不对的代码