如何将.xls文件导入到使用外键.sql

2022-08-30 23:30:47

我有一个 Excel 电子表格:

id name  region  zone  
1  pokin Polon   Riny
2  lucy  yerni   kinta
...

我在mysql数据库中有表,这些表具有并且相反,它们是区域和区域中id的外键。region_idzone_id

用户表:

id name region_id zone_id
1  retre  1        1
...

区域表:

id region_name
1   Polon
...

区域表

id zone_name
1   kinta
...

我需要将Excel电子表格导入用户表。


答案 1
  1. 导出您在电子表格中显示的表格(使用拼写的名称)。
  2. 将其导入MySQL - 例如表。X
  3. 执行以下查询以在创建所需表(使用数字而不是名称)时执行“规范化”:

像这样:

INSERT INTO users
        (id, name, region_id, zone_id)
    SELECT X.id, X.name, r.id, z.id
        FROM X
        LEFT JOIN region AS r ON r.region_name = X.region
        LEFT JOIN zone   AS z ON z.zone_name   = X.zone;

如果 是 ,则您可能希望以略微不同的方式执行此操作。(省略 和 .)idAUTO_INCREMENTidINSERTSELECT

我用以防万一有一些缺少的区域或分区。在这种情况下,您将获得 或 的默认值,从而指示某些内容需要修复。LEFTNULLsregion_idzone_id


答案 2

我建议在.xls表中,将区域和区域名称替换为数据库中这些字段的实际 ID。然后,您可以将xls文件导出为csv文件,然后使用mysqlimport轻松地将其导入到数据库中。

mysqlimport --ignore-lines=1 \
        --fields-terminated-by=, \
        --local -u root \
        -p DatabaseName \
         YourExportedFile.csv

这里需要考虑的几件事:

  1. 执行命令时文件的路径。
  2. fiels-terminate-by 字符
  3. “-p DatabaseName”,DatabaseName不是密码,是你的数据库名称,执行命令时会提示密码。

您可以使用 LOAD DATA INFILE 导入带有 SQL 语句的 CSV 文件

LOAD DATA INFILE "/home/user/YourExportedFile.csv"
INTO TABLE YOUR_TABLE
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

此外,如果您使用的是任何图形MySQL客户端(mysql workbench,heideSql,mysqlpro等),则可以改用导入功能。


推荐