mysql合并脚本来创建表

时间:2012-05-23 15:18:11

标签: mysql

我遇到了一个问题,我无法想出解决问题的方法。 我需要将几种语言的国家/地区名称插入到我的mysql数据库的表中。 我找到了这些链接link1(en),link2(de)等但我不知道如何继续以便最终得到一个如下表:

CREATE TABLE `country` (
  `id` varchar(2) NOT NULL,
  `en` varchar(64) NOT NULL,
  `de` varchar(64) NOT NULL,
  ...
  ...
  PRIMARY KEY (`id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;

2 个答案:

答案 0 :(得分:1)

好吧,我终于明白了,所以我发帖可能会帮助其他人。

我创建了2个表(country_en)和(country_de),然后运行以下语句:

DROP table if exists `countries`;

CREATE TABLE `countries` (
  id  varchar(2), el varchar(100), de varchar(100)
);

INSERT INTO `countries`
SELECT country_en.id, el, de
FROM   country_en 
JOIN   country_de ON (country_en.id = country_de.id);

创建表countries并在其公共密钥id上加入其他2个表

答案 1 :(得分:0)

我可以建议你另一个桌子设计。创建languages表,并修改一个小country表:添加lang_id字段并创建外键 - FOREIGN KEY(lang_id)   参考语言(id)。然后填充languagescountry表。

例如:

CREATE TABLE languages(
  id VARCHAR(2) NOT NULL,
  name VARCHAR(64) NOT NULL,
  PRIMARY KEY (id)
) ENGINE = INNODB;

CREATE TABLE country(
  id VARCHAR(2) NOT NULL,
  lang_id VARCHAR(2) NOT NULL DEFAULT '',
  name VARCHAR(64) NOT NULL,
  PRIMARY KEY (id, lang_id),
  CONSTRAINT FK_country_languages_id FOREIGN KEY (lang_id)
  REFERENCES languages (id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE = INNODB;

-- Populate languages
INSERT INTO languages VALUES 
  ('en', 'English'),
  ('de', 'German');

-- Populate names from 'en' table
INSERT INTO country SELECT id, 'en', name FROM country_en;

-- Populate names from 'de' table
INSERT INTO country SELECT id, 'de', name FROM country_de;

...其中country_encountry_de是您链接中的表格。