如何将主文本导入文本文件作为自动增量

web*_*orm 14 import phpmyadmin auto-increment

我在文本文件中有一些批量数据需要导入到MySQL表中.该表由两个字段组成..

  1. ID(带自动增量的整数)
  2. 名称(varchar)

文本文件是一个大的名称集合,每行有一个名称...

(例)

John Doe
Alex Smith
Bob Denver
Run Code Online (Sandbox Code Playgroud)

我知道如何通过phpMyAdmin导入文本文件,但据我所知,我需要导入与目标表具有相同字段数的数据.有没有办法将我的文本文件中的数据导入一个字段并让ID字段自动自动增加?

预先感谢您的任何帮助.

Que*_*eue 16

我使用的另一种方法不需要重新排序表的字段(假设自动增量字段是第一列)如下:

1) Open/import the text file in Excel (or a similar program).

2) Insert a column before the first column. 

3) Set the first cell in this new column with a zero or some other placeholder.

4) Close the file (keeping it in its original text/tab/csv/etc. format).

5) Open the file in a text editor.

6) Delete the placeholder value you entered into the first cell.

7) Close and save the file.
Run Code Online (Sandbox Code Playgroud)

现在,您将拥有一个文件,其中包含原始文件的每一行,前面有一个空列,在通过phpMyAdmin导入时,该列将转换为下一个相关的自动增量值.


Fab*_*ert 10

这是迄今为止最简单的方法:

  1. 确保您的文件没有包含列名称的标题行.如果是,请将其删除.
  2. 在phpMyAdmin中,像往常一样:进入表格的" 导入"选项卡,然后选择您的文件.选择CSV格式.然后 - 这是重要的一部分 - 在

格式特定选项:

... Column names: 填写数据所用列的名称,在您的情况下为"名称".

这将导入名称并自动增加id列.你完成了!

用phpMyAdmin 4.2.7.1测试得很好.


DRa*_*app 5

使用LOADTABLE INFILE导入时不正确,只需将自动增量列创建为LAST列/字段...作为解析,如果您的表定义为30列,但文本文件只有1(或更少) ,它将以直接顺序首先导入前导列,因此请确保在字段之间(对于将来的任何导入),您的分隔是正确的.再次,将自动增量AFTER放入您知道的导入列数.

create table YourMySQLTable
(  FullName varchar(30) not null ,
   SomeOtherFlds varchar(20) not null,
   IDKey int not null AUTO_INCREMENT,
   Primary KEY (IDKey)
);
Run Code Online (Sandbox Code Playgroud)

请注意,IDKey在表的最后一个字段中自动递增...无论您的INPUT流文本文件是否可能比最终表实际容纳的列少.

然后,通过...导入数据

LOAD DATA
    INFILE `C:\SomePath\WhereTextFileIs\ActualFile.txt`
    INTO TABLE YourMySQLTable
    COLUMNS TERMINATED BY `","`  
    LINES TERMINATED BY `\r\n` ;
Run Code Online (Sandbox Code Playgroud)

上面的示例基于逗号分隔列表,每个字段周围都有引号,例如"myfield1","anotherField","LastField".此外,终止是典型文本文件每行分隔的cr/lf

在具有全名作为单列的文本文件样本中,所有数据都将加载到FullName列中的"YourMySQLTable"中.由于IDKey位于列表的END,它仍然会自动增加1到1的指定值.并且与入站文本中的列没有任何冲突.

  • 我害怕我不太明白你的答案.你能把它分解一下吗?我不确定你的意思是创建自动增量列作为最后一个文件. (5认同)