Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Importuj dane z Excela do tabel relacyjnych w MySQL

Możesz zapisz arkusz Excela jako plik CSV , a następnie zaimportuj taki plik do tymczasowej tabeli MySQL z tymi samymi kolumnami arkusza Excel za pomocą WCZYTAJ PLIK DANYCH i wreszcie podziel rekordy tabeli tymczasowej na trzy tabele „miasta”, „miasta” i „dzielnice”.
Założenie:ponieważ żadne z pól „id” nie występuje w pliku Excel, przypuszczam, że wszystkie identyfikatory są polami „auto_increment”; również pole „kontynent” w tabeli „miasta” będzie zawsze ustawione na pustą wartość, ponieważ to pole nie występuje w arkuszu Excela; na koniec przyjmę, że wszystkie pola „nazwa” mają maksymalną długość 255 znaków.
Zaczynając od przykładowych danych, eksportując arkusz Excela w formacie CSV i zapisując (na przykład) w „C:\Temp\excel.csv " plik, powinieneś otrzymać coś takiego:

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

Aby zaimportować ten plik do bazy danych MySQL, utwórz plik „excel2mysql.sql " plik z następującą zawartością i wykonaj to :

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. Jak przeszukiwać tablicę JSON w MySQL?

  2. WebApp (Tomcat-jdbc) Połączenie z pulą bazy danych zgłaszające wyjątek porzucenia

  3. jak zapisać wartość pola wyboru w bazie danych mysql za pomocą php

  4. Jak wyświetlić obraz mysql blob w kontroli obrazu asp.net?

  5. Jak wstawić wartość hebrajską do bazy danych mysql w php