mySQL CSV导入中的未知列

时间:2010-10-26 18:13:29

标签: django mysql django-models

我正在尝试将一个小的CSV文件导入到我的django程序中。我正在使用SQL,这是我到目前为止所拥有的。 CSV文件本身具有名为Customer的Column1,我正在尝试获取该信息并将其分配给模型字段名称“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 个答案:

答案 0 :(得分:1)

我保持一个空的(即以“通行证”终止)管理一个zip文件,我可以在需要一次性时解开。如果你正在与MySQL斗争,那就去做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 ID。有更聪明的方法可以做到这一点(保证唯一性是一个好主意!),但这是核心理念。

答案 1 :(得分:0)

我在这里猜一点,但听起来你有一个带有标题行的CSV,并且你想将该CSV的第一列加载到表名为clients_clients的client_name列中。

是吗?

如果是这样,这应该有效:

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);

答案 2 :(得分:0)

您似乎可能尝试以不同的顺序加载列,也许只是列的一部分。如果是这样,正确的语法是:

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文件的顺序。