Как импортировать текстовый файл в таблицу с первичным ключом как автоинкремент
У меня есть объемные данные в текстовом файле, который мне нужно импортировать в таблицу MySQL. Таблица состоит из двух полей.
- ID (целое число с автоматическим приращением)
- Имя (varchar)
Текстовый файл представляет собой большую коллекцию имен с одним именем в строке...
(пример)
John Doe
Alex Smith
Bob Denver
Я знаю, как импортировать текстовый файл через phpMyAdmin, однако, насколько я понимаю, мне нужно импортировать данные с таким же количеством полей, что и целевая таблица. Есть ли способ импортировать данные из моего текстового файла в одно поле и автоматически автоинкремент поля идентификатора?
Заранее спасибо за любую помощь.
Ответы
Ответ 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, но поле увеличилось, как ожидалось...