Импорт CSV-файлов, содержащих данные с запятыми в MySQL - PullRequest
0 голосов
/ 05 марта 2012

У меня более 10 ГБ .csv файлов. Я пытаюсь импортировать данные из этих файлов в MySQL, используя python. Поскольку CSV-файлы - это файлы, разделенные запятыми, и у меня есть данные, которые сами содержат запятые, поэтому я не могу использовать «,» здесь для разделения. Там, пожалуйста, предложите какой-то другой вариант для разделения файла CSV. Я хочу импортировать данные из файла CSV (где сами данные содержат запятую) в MySQL (я использую сервер Wamp для того же). У меня есть такие данные, как «Лондон, Великобритания», «2010», «Кредит, сбережения»

Ответы [ 2 ]

5 голосов
/ 05 марта 2012

Хороший ответ был предоставлен для импорта с использованием Python.Но мне неясно, зачем вам нужен Python для этого.MySQL имеет встроенные команды для импорта данных CSV - см. Справочную страницу load data .Например,

LOAD DATA LOCAL INFILE 'source_data.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;

Эта последняя часть игнорирует первую строку (используйте, если ваш CSV-файл имеет "заголовок").

2 голосов
/ 05 марта 2012

Прежде всего, я предполагаю, что файлы CSV имеют кавычки вокруг строковых значений.

Таким образом, каждое значение, содержащее запятую, окружено такой кавычкой:

a, b, 2, 'foo, bar'

Если это так, то вы можете использовать следующее:

импорт

 csv

quoteChar = "'"

myReader = csv.reader(open('largefile.csv', 'rb'), delimiter=',', quoteChar = quoteChar)

for row in myReader:
    print row # this prints a list. Row is a list of values per line in your
    # 'largefile.csv' file. Each row is splitted on the delimiter char.
    # (comma in this case) and strings that are quoted by quoteChar (in your case
    # a ' are treated differently.) This will work for your input that you've given
    # in your question.

# this is what you used to do:
for line in open('largefile.csv', 'rb'):
     row = line.split(quoteChar)

Если иначе, это будет зависеть от того, как будут выглядеть ваши CSV-файлы.

...