可以得到你可以save your Excel sheet as in a CSV file,然後在臨時MySQL表使用LOAD DATA INFILE命令導入這樣的文件,Excel工作表的相同列,終於在拆分臨時表中的記錄三個表格「城市」,「城鎮」和「區域」。
前提:由於Excel文件中沒有「id」字段,因此我想所有的id都是「auto_increment」字段;此外,「城鎮」表中的「大陸」字段將始終設置爲空白值,因爲此字段不存在於Excel工作表中;最後,我假定所有「名稱」字段的最大長度爲255個字符。
從樣本數據出發,通過CSV格式導出Excel工作表和保存(例如)進入「C:\ TEMP \ excel.csv」的文件,你應該得到這樣的事情:
"city name","town name","district name"
"X","Y","A"
"X","Y","B"
"X","K","C"
"X","K","D"
要將此文件導入到MySQL數據庫中,請創建一個「excel2mysql。SQL「有以下內容的文件,並execute it:
DROP TABLE IF EXISTS excel_table;
CREATE temporary TABLE excel_table (
city_name VARCHAR(255),
town_name VARCHAR(255),
district_name VARCHAR(255)
) DEFAULT CHARSET utf8;
LOAD DATA LOCAL INFILE 'C:/Temp/excel.csv'
INTO TABLE excel_table
CHARACTER SET utf8
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
DROP TABLE IF EXISTS cities;
CREATE TABLE cities (
city_id int NOT NULL auto_increment,
city_name VARCHAR(255),
primary key (city_id)
) DEFAULT CHARSET utf8;
INSERT INTO cities
SELECT distinctrow NULL, city_name
FROM excel_table
ORDER BY city_name;
DROP TABLE IF EXISTS towns;
CREATE TABLE towns (
town_id int NOT NULL auto_increment,
city_id int NOT NULL,
town_name VARCHAR(255),
continent VARCHAR(255),
primary key (town_id)
) DEFAULT CHARSET utf8;
INSERT INTO towns
SELECT distinctrow NULL, city_id, town_name, ''
FROM excel_table, cities
WHERE cities.city_name=excel_table.city_name
ORDER BY town_name;
DROP TABLE IF EXISTS districts;
CREATE TABLE districts (
district_id int NOT NULL auto_increment,
town_id int NOT NULL,
district_name VARCHAR(255),
primary key (district_id)
) DEFAULT CHARSET utf8;
INSERT INTO districts
SELECT distinctrow NULL, town_id, district_name
FROM excel_table, towns
WHERE towns.town_name=excel_table.town_name
ORDER BY district_name;
如果您在Excel中工作,ADO如何? – Fionnuala 2011-02-08 13:32:55