【问题标题】:Unknown column in mySQL CSV importmySQL CSV 导入中的未知列
【发布时间】:2010-10-26 18:13:29
【问题描述】:

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

有什么建议吗?

谢谢大家。

【问题讨论】:

  • 我认为这根本不是正确的语法。 MySQ 的 LOAD DATA 没有将列标签与列关联的语法;基本上都是定位的。有没有考虑写一个简单的 django 管理命令来导入 CSV 文件?
  • @Elf 到目前为止,我只需要导入这个文件一次,然后我们将使用这个系统。

标签: django mysql django-models


【解决方案1】:

我在它周围保留了一个空的(即以“通行证”终止)管理一个 zip 文件,我可以在需要一次性使用时解开它。如果您在使用 MySQL 时遇到困难,请使用 Django 方式:

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。有更聪明的方法可以做到这一点(保证唯一性是个好主意!),但这是核心思想。

【讨论】:

    【解决方案2】:

    您似乎正在尝试以不同的顺序加载列,并且可能只是列的一个子集。如果是这样,正确的语法是:

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

    【讨论】:

    • 看到here,您可以看到字段列表只能在FIELDS/LINES TERMINATED BY...之后出现,并且任何未包含的字段都将被清除。或者,您可以包括所有字段而不列出它们。很好的答案:stackoverflow.com/a/12329794/469643.
    【解决方案3】:

    我在这里猜测了一下,但听起来您有一个带有标题行的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-25
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多