Неизвестный столбец в импорте mySQL CSV - PullRequest
0 голосов
/ 26 октября 2010

Я пытаюсь импортировать небольшой CSV-файл в мою программу django.Я использую SQL, и вот что я имею до сих пор.Сам CSV-файл имеет Column1 с именем Customer, и я пытаюсь взять эту информацию и присвоить ее имени поля модели «client_name».Проблема, возникающая при выполнении этого запроса, заключается в том, что я получаю неизвестный столбец 'customer' в списке ошибок, но не знаю, как его исправить.

LOAD DATA LOCAL INFILE 'home/steve/Desktop/ClientListing_2.csv' INTO TABLE clients_clients
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
SET Customer = client_name;

Есть предложения?

Спасибо всем.

Ответы [ 3 ]

1 голос
/ 26 октября 2010

Я храню пустое (то есть завершенное "пропуском") управление вокруг него zip-файлом, который я могу распаковать всякий раз, когда мне нужен одноразовый файл.Если вы боретесь с MySQL, сделайте это The Django Way:

from django.core.management import BaseCommand
import csv
from clients.models import Client
class Command(BaseCommand):
    def handle(self,*args,**options):
        for row in csv.reader(open('path/to/ClientListing_2.csv', 'rb'), delimiter=',', quotechar='"'):
            if row[0] == 'Customer': 
                continue
            Client.objects.get_or_create(client_name = row[0])

Сохраните, запустите, удалите.Этот метод гарантирует, что идентификаторы Django генерируются правильно.Есть более разумные способы сделать это (гарантией уникальности было бы неплохо!), Но это основная идея.

0 голосов
/ 26 октября 2010

Похоже, вы пытаетесь загрузить столбцы в другом порядке и, возможно, просто подмножество столбцов. Если это так, правильный синтаксис:

LOAD DATA LOCAL INFILE 'home/steve/Desktop/ClientListing_2.csv'
INTO TABLE clients_clients
(client_name, ...)
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';

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

0 голосов
/ 26 октября 2010

Я предполагаю, что здесь немного, но, похоже, у вас есть CSV со строкой заголовка, и вы хотите загрузить первый столбец этого CSV в столбец client_name таблицы имен clients_clients.

Это верно?

Если так, это должно работать:

LOAD DATA LOCAL INFILE 'home/steve/Desktop/ClientListing_2.csv' 
INTO TABLE clients_clients 
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(client_name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...