【发布时间】:2011-10-12 00:40:31
【问题描述】:
我正在寻找一种巧妙的方法来从 Excel 电子表格中提取 500 多行数据并将其输入到我的数据库中。
电子表格类似于this
我的表 'tbl_foot_teams' 设置为
标识 |姓名 |评分
很简单,我需要将电子表格中的两列输入到数据库字段名称和评级中。
有没有什么有效的方法来实现这一点? 就个人而言,这将花费我大量的时间!
谢谢
【问题讨论】:
我正在寻找一种巧妙的方法来从 Excel 电子表格中提取 500 多行数据并将其输入到我的数据库中。
电子表格类似于this
我的表 'tbl_foot_teams' 设置为
标识 |姓名 |评分
很简单,我需要将电子表格中的两列输入到数据库字段名称和评级中。
有没有什么有效的方法来实现这一点? 就个人而言,这将花费我大量的时间!
谢谢
【问题讨论】:
将 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 格式)。
【讨论】:
在 phpmyadmin 中,您有一个“从 Excel 导入”选项。
如果您没有,您可能需要从 CSV 导入,因此只需将电子表格转换为 CSV。
如果以上都没有,你可以编写一个php函数,打开一个文本文件,按行分解,然后按值分解
【讨论】:
如果我们谈论的是 50 行,您可以轻松地在电子表格上创建一个新列,使用公式将您的值连接到插入语句。比如:
=concat("插入 tbl_foot_teams (name, rating) 值 (", $b8, " ...
然后,将计算公式文本结果复制粘贴到您的数据库中。
【讨论】:
您无需指定使用的数据库,但使用 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="""
【讨论】:
从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
【讨论】:
转换为 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(逗号分隔值)文件。
【讨论】: