sql >> Databáze >  >> RDS >> Mysql

Importujte data aplikace Excel do relačních tabulek v MySQL

Můžete uložte svůj excelový list jako soubor CSV , poté importujte takový soubor do dočasné tabulky MySQL se stejnými sloupci jako na listu Excel pomocí NAČÍST DATOVÝ VSTUPNÍ SOUBOR příkaz a nakonec rozdělte dočasné záznamy tabulky do tří tabulek "města", "města" a "okresy".
Předpoklad:protože žádné z polí "id" není v souboru Excel přítomno, předpokládám, že všechna id jsou pole "auto_increment"; také pole „kontinent“ v tabulce „města“ bude vždy nastaveno na prázdnou hodnotu, protože toto pole není ve vašem listu Excel přítomno; nakonec budu předpokládat, že všechna pole "name" mají maximální délku 255 znaků.
Začněte z vašich ukázkových dat exportem tabulky Excel ve formátu CSV a uložením (například) do "C:\Temp\excel.csv ", měli byste získat něco takového:

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

Chcete-li tento soubor importovat do své databáze MySQL, vytvořte soubor "excel2mysql.sql " soubor s následujícím obsahem a spustit 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. Chyba tabulky MySQL neexistuje, ale existuje

  2. Postup:Vytvořte spouštěč pro datum změny automatické aktualizace pomocí SQL Server 2008

  3. Získání popisovače pro nativní Oracle Connection v Hibernate 4 pro spuštění uloženého proc

  4. Laravel:Nedefinovaný index:ovladač