Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhập dữ liệu Excel vào bảng quan hệ tại MySQL

Bạn có thể lưu trang tính Excel của bạn dưới dạng tệp CSV , sau đó nhập tệp đó vào bảng MySQL tạm thời có cùng các cột của trang tính Excel bằng cách sử dụng TẢI THÔNG TIN DỮ LIỆU và cuối cùng tách các bản ghi bảng tạm thời thành ba bảng "thành phố", "thị trấn" và "quận".
Tiền đề:vì không có trường "id" nào có trong tệp Excel, tôi cho rằng tất cả id là trường "auto_increment"; đồng thời, trường "lục địa" của bảng "thị trấn" sẽ luôn được đặt thành giá trị trống, vì trường này không có trong trang tính Excel của bạn; cuối cùng, tôi sẽ giả sử rằng tất cả các trường "tên" có độ dài tối đa là 255 ký tự.
Bắt đầu từ dữ liệu mẫu của bạn, bằng cách xuất Trang tính Excel ở định dạng CSV và lưu (ví dụ) vào " C:\ Temp \ excel.csv ", bạn sẽ nhận được một cái gì đó như thế này:

"city name","town name","district name"
"X","Y","A"
"X","Y","B"
"X","K","C"
"X","K","D"

Để nhập tệp này vào cơ sở dữ liệu MySQL của bạn, hãy tạo " excel2mysql.sql "tệp có nội dung sau và thực thi nó :

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - tôi có thể truy vấn có bao nhiêu connect_errors mà một máy chủ nhất định đã cung cấp không?

  2. Mệnh đề Where để lọc hàng trong MySQL

  3. tìm kiếm từ khóa mysql

  4. Thay đổi hoặc đặt Giá trị thời gian truy vấn dài MySQL cho các truy vấn chậm nhật ký

  5. Một bảng Mysql với nhiều cột TIMESTAMP