导出mysql中的自动递增列描述

Posted

技术标签:

【中文标题】导出mysql中的自动递增列描述【英文标题】:Auto increment column description in export mysql 【发布时间】:2019-02-14 08:31:03 【问题描述】:

我想使用 php 代码导出 mysql 数据库,因为我的服务器上没有 mysqldump。我能够创建类似于 phpmyadmin 导出文件的大部分导出文件。我被困在如何添加类似于 phpmyadmin 导出的自动递增列名和值。

    --
-- AUTO_INCREMENT for table `event`
--
ALTER TABLE `event`
  MODIFY `event_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;

一种方法是使用不同的查询来查找自动增量列名、字段类型及其值。有没有其他办法。让我知道。谢谢

【问题讨论】:

查看SHOW CREATE TABLE的结果 【参考方案1】:

INFORMATION_SCHEMA.COLUMNS 表会告诉您列是否为 auto_incrementing。

mysql> create table test.MyTable ( id int auto_increment primary key);

mysql> select * from information_schema.columns where table_schema='test'\G
*************************** 1. row ***************************
           TABLE_CATALOG: def
            TABLE_SCHEMA: test
              TABLE_NAME: MyTable
             COLUMN_NAME: id
        ORDINAL_POSITION: 1
          COLUMN_DEFAULT: NULL
             IS_NULLABLE: NO
               DATA_TYPE: int
CHARACTER_MAXIMUM_LENGTH: NULL
  CHARACTER_OCTET_LENGTH: NULL
       NUMERIC_PRECISION: 10
           NUMERIC_SCALE: 0
      DATETIME_PRECISION: NULL
      CHARACTER_SET_NAME: NULL
          COLLATION_NAME: NULL
             COLUMN_TYPE: int(11)
              COLUMN_KEY: PRI
                   EXTRA: auto_increment                    <-- here
              PRIVILEGES: select,insert,update,references
          COLUMN_COMMENT: 
   GENERATION_EXPRESSION: 
                  SRS_ID: NULL

表的 auto_increment 的值在 INFORMATION_SCHEMA.TABLES 中。

mysql> insert into test.MyTable () values ();

mysql> select * from information_schema.tables where table_schema='test'\G
*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: test
     TABLE_NAME: MyTable
     TABLE_TYPE: BASE TABLE
         ENGINE: InnoDB
        VERSION: 10
     ROW_FORMAT: Dynamic
     TABLE_ROWS: 1
 AVG_ROW_LENGTH: 16384
    DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
   INDEX_LENGTH: 0
      DATA_FREE: 0
 AUTO_INCREMENT: 2                                          <-- here
    CREATE_TIME: 2018-09-09 15:31:45
    UPDATE_TIME: 2018-09-09 15:33:29
     CHECK_TIME: NULL
TABLE_COLLATION: utf8_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS: 
  TABLE_COMMENT: 

顺便说一句,我曾经尝试做你正在做的事情,在纯 PHP 代码中复制 mysqldump 的行为。这比你想象的要难。我的努力还没有完成,而且我不太可能继续工作,因为这些天我不使用 PHP。你可以看看:https://github.com/billkarwin/cats-and-dogs

【讨论】:

以上是关于导出mysql中的自动递增列描述的主要内容,如果未能解决你的问题,请参考以下文章

通过路由从 Laravel 中的 MySQL 导出列时出错

MySQL - 导出数据,忽略主键。然后使用自动增量导入

跨两个数据库导入/导出表的某些列并排除 mysql 中的重复电子邮件

MySQL 工作台:如何将特定列导出为更新语句?

将 SAS 表导出到 Excel 电子表格中的列格式

sqoop 将特定列从 hdfs 导出到 mysql