从CSV将新表导入MySQL v5的最简单方法是什么?

时间:2020-03-06 14:58:13  来源:igfitidea点击:

我在本地网络上的Linux服务器上运行MySQL 5. 在我的桌面上运行Windows XP。看过MySQL GUI工具,但我认为它们没有帮助。我无法在远程服务器上安装apache并使用PHPmyAdmin之类的东西。

解决方案

编写一个简单的Python脚本来分析CSV并将其插入表中。

查看csv和mysqldb模块。

我在Windows系统上使用SQLyog,该系统具有免费的Community Edition,并且可以选择从CSV导入。

我自己从未使用过此选项,所以我无法告诉我们它有多好。但是,SQLyog在我使用过的所有其他功能上都很出色。

我将使用电子表格编辑器制作一组SQL语句。在开始处添加一个新列,并在表名值中添加"插入"(添加其他列,以使用"'',""代码分隔数据。以"''结束);。使用自动填充功能将这些单元格向下拖动到所需的尽可能多的行。将整个工作表复制到纯文本编辑器,然后删除多余的选项卡,从而为我们提供一组简单的插入语句。

这是我可以用于任何数据库系统和任何电子表格文件格式的解决方案。另外,很容易从其他数据库等来源填充电子表格,也可以从网页进行复制和粘贴。它也非常快,可以在任何台式机上使用Excel,OpenOffice或者Google Docs进行访问。

请参阅我在Excel和OpenOffice版本中的示例电子表格。

看看@ load data infile:http://dev.mysql.com/doc/refman/5.0/en/load-data.html

如果我们不介意使用一些商业软件,那么Navicat(http://mysql.navicat.com/)是非常有用的软件,可用于Mac,Windows和Linux。我定期使用它将大型CSV文件导入数据库。

从MySQL Shell或者查询浏览器...

如果CSV没有标题:

LOAD DATA INFILE 'mycsvfile.csv' INTO TABLE mytable;

如果CSV具有标头:

LOAD DATA INFILE 'mycsvfile.csv' INTO TABLE mytable IGNORE 1 LINES;

我只是使用LOAD DATA INFILE来完成此操作的,但值得注意的是,它并不像Gareth的示例那么简单(Kai完全正确,我们应该看一下文档)。为了正确导入逗号分隔的值,我使用了以下方法:

LOAD DATA LOCAL INFILE 'mycsvfile.csv' INTO TABLE mytable 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

假设CSV文件的每个字段都带有引号,并且顶部带有单个标头行。 (我们可能不需要LINES TERMINATED BY,因为它应该是默认值,但明确表示这是一个好习惯。)

Toad for MySQL可以很好地做到这一点,可以对导入进行相当大的控制(例如,选择性地匹配列),并且最持久的是免费的。

我也使用过SQLYog,但是我们必须为此使用商业版本,因为社区版本中没有从文件导入的功能。

Toad是非常出色的软件,它适用于所有主要数据库的版本,过去我也曾使用过MSSQL和Oracle版本。推荐的。

Toad应用程序确实可以创造奇迹,并且是免费软件。如果我们有正确的CSV文件,它将创建该表并为我们导入所有数据。