Подтвердить что ты не робот

Как импортировать текстовый файл в таблицу с первичным ключом как автоинкремент

У меня есть объемные данные в текстовом файле, который мне нужно импортировать в таблицу MySQL. Таблица состоит из двух полей.

  • ID (целое число с автоматическим приращением)
  • Имя (varchar)

Текстовый файл представляет собой большую коллекцию имен с одним именем в строке...

(пример)

John Doe
Alex Smith
Bob Denver

Я знаю, как импортировать текстовый файл через phpMyAdmin, однако, насколько я понимаю, мне нужно импортировать данные с таким же количеством полей, что и целевая таблица. Есть ли способ импортировать данные из моего текстового файла в одно поле и автоматически автоинкремент поля идентификатора?

Заранее спасибо за любую помощь.

4b9b3361

Ответ 1

Неправильно при импорте с помощью LOADTABLE INFILE просто создайте столбец автоинкремента как поле LAST column/... Когда он будет разбор, если ваша таблица определена с 30 столбцами, но текстовый файл имеет только 1 (или что-то меньшее), он сначала импортирует ведущие столбцы, в прямой последовательности, поэтому убедитесь, что ваш разделитель... корректен между полями (для любого будущего импорта). Снова добавьте автоинкремент ПОСЛЕ количества импортируемых столбцов.

create table YourMySQLTable
(  FullName varchar(30) not null ,
   SomeOtherFlds varchar(20) not null,
   IDKey int not null AUTO_INCREMENT,
   Primary KEY (IDKey)
);

Обратите внимание, что IDKey автоматически увеличивается в последнем поле таблицы... независимо от вашего текстового файла потока INPUT, который может иметь меньше столбцов, чем фактически будет удерживать ваша окончательная таблица.

Затем импортируйте данные через...

LOAD DATA
    INFILE `C:\SomePath\WhereTextFileIs\ActualFile.txt`
    INTO TABLE YourMySQLTable
    COLUMNS TERMINATED BY `","`  
    LINES TERMINATED BY `\r\n` ;

Вышеприведенный пример основан на разделенном запятой списке с кавычками вокруг каждого поля, например "Myfield1", "anotherField", "LastField". Кроме того, оканчивается cr/lf, что типичные текстовые файлы ограничены в строке

В образце вашего текстового файла, имеющего полное имя как один столбец, все данные будут загружены в "YourMySQLTable" в столбец FullName. Поскольку IDKey находится в END списка, он все равно будет автоматически увеличивать присвоенные значения из 1-? и не конфликтуют с столбцами из входящего текста.

Ответ 2

Другой метод, который я использую, не требует переупорядочения полей таблицы (при условии, что поле auto-increment является первым столбцом) выглядит следующим образом:

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.

Теперь у вас будет файл, содержащий каждую строку исходного файла, которому предшествует пустой столбец, который будет преобразован в следующее соответствующее значение автоматического увеличения при импорте через phpMyAdmin.

Ответ 3

Вот самый простой способ:

  • Убедитесь, что у вашего файла нет строки заголовка с именами столбцов. Если это так, удалите его.
  • В phpMyAdmin, как обычно: зайдите на вкладку "Импорт" для своей таблицы и выберите файл. Выберите формат CSV в качестве формата. Затем - и это важная часть - в

Параметры, специфичные для формата:

... в Column names: заполните имя столбца, данные которого указаны для, в вашем случае "Имя".

Это приведет к импорту имен и автоматическому приращению столбца id. Все готово!

Протестировано отлично с помощью phpMyAdmin 4.2.7.1.

Ответ 4

Я просто попробовал это:

  • В таблице phpMyAdmin - количество полей, которые у вас есть в вашем CSV.
  • Выполните импорт данных csv в таблицу
  • Перейдите на вкладку [Структура] и добавьте новое поле [В начале таблицы] (я предполагаю, что вы хотите, чтобы там было поле id)
  • Заполните атрибут [name] как "id",
  • [длина] до "5"
  • [Индекс] на "Первичный"
  • Отметьте A_I (Автоматическое увеличение)
  • Нажмите кнопку [Go]
  • Таблица должна обновляться с полем id перед всеми вашими данными с автоматическим приращением.

По крайней мере, вам не нужно беспокоиться о совпадении полей и т.д.

Ответ 5

Если столбцы таблицы не совпадают, я обычно добавляю "фиктивные" поля с пустыми данными, где были бы реальные данные, поэтому, если моя таблица нуждается в "id", "name", "surname", "address", "email", и у меня есть "id", "name", "surname", я меняю свой CSV чтобы иметь "id", "name", "surname", "address", "email", но оставьте поля, у которых у меня нет данных для пустых.

В результате получается файл CSV, выглядящий следующим образом:

1,John,Doe,,
2,Jane,Doe,,

Я нахожу его более простым, чем другие методы.

Ответ 6

Я просто использовал TAB в качестве первого поля в текстовом файле, а затем импортировал его как обычно. Я получил предупреждение о поле ID, но поле увеличилось, как ожидалось...