2013-02-20 2 views
1

У меня есть txt-файл, содержащий более 50000 записей. 4 записи (pid, # _ pro_used, notused, selected) разделены с вкладкой space.i хотите вставить эти записи в таблицу, которая имеет 5 столбцы (index, pid, # _ pro_used, notused, selected). Столбец Extra (index) должен быть основным ключом, содержащим счетчик записи.LOAD DATA INFILE с txt-файлом

Я использовал эту команду .. но ее не работает.

LOAD DATA LOCAL INFILE 'D:/temp.txt' INTO TABLE temp_table (COUNT(pid),pid,#_pro_used,notused,selected); 

Возможно ли это? или я должен пойти на спусковой крючок?

+0

Добро пожаловать в StackOverflow! Когда вы говорите, что он не работает, дайте подробное сообщение об ошибке, которое вы получаете, а также укажите структуру таблицы, в которую вы пытаетесь загрузить, и несколько строк исходных данных, которые помогут нам вам помочь. –

+0

вот он - Код ошибки: 1064 У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'Count (pid), pid, # _ pro_used, notused, selected)' в строке 1 – san88

+0

можно использовать команду LOAD DATA INFILE для вставки столбца который не находится в источнике импорта данных. Если его нет, то как я могу это сделать. help – san88

ответ

2

Вы не можете использовать COUNT (pid) для подсчета количества вставленных записей. Создайте таблицу со столбцом автоинкрементного и пропустить «COUNT (ИДП)» часть, так:

CREATE TABLE temp_table (
    idx INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    pid ... 
    pro_used ... 
    notused 
    selected 
); 

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,notused,selected); 

Просто к сведению: у вас есть столбец под названием «notused», который я предполагаю, что вы хотите игнорировать , Вы можете просто использовать пользовательскую переменную здесь, которая затем просто выбросит данные:

LOAD DATA LOCAL INFILE 'D:/temp.txt' 
INTO TABLE temp_table (pid,pro_used,@notused,selected); 
+0

Все еще он отображает ошибку. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' по строке 1 – san88

+0

LOAD DATA LOCAL INFILE 'D: /temp.txt' INTO TABLE temp_table (pid, # _ pro_used, notused, selected) ; – san88

+0

создать команду таблицы - CREATE TABLE 'temp_table' ( ' indexid' INT (11) без знака NOT NULL AUTO_INCREMENT, 'pid' VARCHAR (5) NOT NULL, ' # _pro_used' INT (11) DEFAULT NULL, 'notused' двойного DEFAULT NULL, ' selected' двойного DEFAULT NULL, PRIMARY KEY ('indexid') ) – san88