【问题标题】:Entering data from an excel spreadsheet into database?将excel电子表格中的数据输入数据库?
【发布时间】:2011-10-12 00:40:31
【问题描述】:

我正在寻找一种巧妙的方法来从 Excel 电子表格中提取 500 多行数据并将其输入到我的数据库中。

电子表格类似于this

我的表 'tbl_foot_teams' 设置为

标识 |姓名 |评分

很简单,我需要将电子表格中的两列输入到数据库字段名称和评级中。

有没有什么有效的方法来实现这一点? 就个人而言,这将花费我大量的时间!

谢谢

【问题讨论】:

    标签: mysql excel


    【解决方案1】:

    将 Excel 文件另存为 CSV,并使用LOAD DATA INFILE 命令导入数据。

    您的 Excel 文件没有 id 字段。将表中的id字段设为AUTO_INCREMENT,并使用这样的命令-

    LOAD DATA INFILE 'file_name.csv' INTO TABLE tbl_foot_teams
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\r\n'
    -- IGNORE 1 LINES -- if csv file has column headers
    (name, rating)
    SET id = NULL; -- this will set unique value for each row
    

    另外,查看dbForge Studio for MySQL 中的 GUI Data Import tool(Excel 或 CSV 格式)。

    【讨论】:

    • 这个文件应该被 MySQL 服务器访问。您可以指定完整路径,例如- 加载数据输入'c:/folder1/file_name.csv'
    • 这在 phpmyadmin 中给了我一个错误,但没有指定它是什么!我认为这是文件地址的问题......它在mac的下载部分。有什么想法吗?
    • 现在收到以下错误:#1045 - 用户 'dbo378105509'@'%' 的访问被拒绝(使用密码:YES)
    • 访问被拒绝 - 检查密码。
    • 检查密码在哪里呢?仅在这一个查询上?
    【解决方案2】:

    在 phpmyadmin 中,您有一个“从 Excel 导入”选项。
    如果您没有,您可能需要从 CSV 导入,因此只需将电子表格转换为 CSV。
    如果以上都没有,你可以编写一个php函数,打开一个文本文件,按行分解,然后按值分解

    【讨论】:

      【解决方案3】:

      如果我们谈论的是 50 行,您可以轻松地在电子表格上创建一个新列,使用公式将您的值连接到插入语句。比如:

      =concat("插入 tbl_foot_teams (name, rating) 值 (", $b8, " ...

      然后,将计算公式文本结果复制粘贴到您的数据库中。

      【讨论】:

        【解决方案4】:

        您无需指定使用的数据库,但使用 MySQL 执行此操作的一种简单方法是将电子表格导出为 csv 文件,然后使用 mysqlimport 导入 MySQL。

        用户 Philippe Jausions 在this MySQL page 的评论中对此进行了描述:

        如果您是众多尝试将 CSV 文件导入 MySQL 在 MS-Windows 命令/DOS 提示下使用 mysqlimport,试试 以下:

        mysqlimport --fields-optionally-enclosed-by=""" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE YOUR_TABLE.csv
        

        在引号 " 和反斜杠 \ 之间真的会给你带来困难 在 Windows 下寻找合适的组合...

        我通常从包含 YOUR_TABLE.csv 文件。

        如果您的 .csv 文件中有一个带有列名称的标题或 其他“垃圾”,只需添加 --ignore-lines=X 即可跳过第一个 X 行(即 --ignore-lines=1 跳过 1 行)

        如果您的字段(可选)用双引号括起来 " 并且 它们在一个值内加倍(即双双引号 "" = 1 双引号 ") 然后也使用 --fields-escaped-by=\ (默认)和 不是 --fields-escaped-by="""

        【讨论】:

          【解决方案5】:

          从Excel端工作,可以使用ADO,例如Excel VBA: writing to mysql database

          Dim cn As ADODB.Connection
          
          ''Not the best way to get the name, just convenient for notes
          strFile = Workbooks(1).FullName
          strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
              & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
          
          Set cn = CreateObject("ADODB.Connection")
          
          ''For this to work, you must create a DSN and use the name in place of 
          ''DSNName, however, you can also use the full connection string
          strSQL = "INSERT INTO [ODBC;DSN=DSNName;].NameOfMySQLTable " _
          & "Select AnyField As NameOfMySQLField FROM [Sheet1$];"
          
          cn.Execute strSQL
          

          【讨论】:

            【解决方案6】:

            转换为 CSV 文件后,您可以导入任何支持从 CSV 文件(MySQL、PostgreSQL 等)导入的数据库,但您必须从命令行执行此操作:

            您可以使用诸如Python 之类的编程语言并为其使用诸如Excel spreadsheet reading library 之类的库,然后使用另一个library for interfacing with your SQL database

            您连接到数据,加载 Excel 文件,然后遍历每一行并提取您想要的任何列数据。然后获取该数据并执行INSERT 语句。

            如果您在服务器上安装了phpMyAdmin,则可以使用the Import from CSV option,但您首先必须将 Excel 电子表格重新保存为 CSV(逗号分隔值)文件。

            【讨论】:

              最近更新 更多