将列名更改为 MySQL 表中的第一行
Posted
技术标签:
【中文标题】将列名更改为 MySQL 表中的第一行【英文标题】:Change Column names to first row in MySQL Table 【发布时间】:2016-09-22 09:59:35 【问题描述】:我使用phpMyAdmin
的import
选项将CSV 文件导入为SQL 表(因为我发现这是最简单的)。现在列名是“COL 1, COL 2,...”,所需的列名是表中的第一行。
如何将列名更改为第一行中的值(对于数据库的所有表)?
Here 是一种一次更改一个列名的方法,但我在数据库的每个表中都有太多列名,我想一次将其应用于所有表。
有没有一种比较简单的方法来做到这一点?或者我应该在导入 CSV 文件时尝试合并它吗?
【问题讨论】:
您可以编写一个脚本来执行此操作,但最简单和最好的方法可能是再次导入您的数据,这次检查选项“文件的第一行包含表格列名。”,因为您的数据类型现在也可能是错误的(因为您可能不(想要)只有 varchar 列) @Solarflare 我最终做到了。但是我想知道写一个脚本会不会很困难? 当我写下我正在考虑一个 php 脚本时,它应该是直截了当的:show tables
获取表,为每个表 show columns from table
获取数据类型,获取并删除第一行表格(有时可能很难识别),为每一列做alter table table change oldname newname datatype
。您的链接的脚本版本(但没有更正可能通过重新导入的数据类型)。在 sql 存储过程中,您可以使用 information_schema,并且对列有更难的时间(php 将它们放在一个带有一个查询的数组中)。
【参考方案1】:
导入时,有一个“文件的第一行包含表格列名(如果不选中,第一行将成为数据的一部分)”的复选框。
选中该框将使用第一行作为列名,从而使您不必编写任何额外的脚本或手动更改任何内容。
【讨论】:
以上是关于将列名更改为 MySQL 表中的第一行的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Pandas 中的列名从日期时间对象更改为字符串?
无法在 ETL 过程中使用 Pandas 和 SQLAlchemy 将列名从 CSV 更改为 SQL Server DB