sql >> データベース >  >> RDS >> Mysql

MySQLのリレーショナルテーブルにExcelデータをインポートする

    ExcelシートをCSVファイルのように保存 次に、データファイルの読み込み コマンドを実行し、最後に一時テーブルレコードを「cities」、「towns」、「districts」の3つのテーブルに分割します。
    前提:Excelファイルには「id」フィールドがないため、次のようになります。すべてのIDは「auto_increment」フィールドです。また、「町」テーブルの「大陸」フィールドは常に空白の値に設定されます。これは、このフィールドがExcelシートに存在しないためです。最後に、すべての「名前」フィールドの最大長は255文字であると想定します。
    サンプルデータから始めて、ExcelシートをCSV形式でエクスポートし、(たとえば)「<」に保存します。 strong> 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

    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. PDOエラーの原因他のバッファリングされていないクエリがアクティブな間はクエリを実行できませんか?

    2. AWSRDSを使用したHerokuアプリでMysql2::Error(SSL接続エラー:ASN:不正な他の署名の確認)を取得する

    3. テーブルを結合する方法-SQL

    4. SQL Server(T-SQL)でクエリ結果を電子メールで送信するときに列ヘッダーを削除する方法