загрузить содержимое файла CSV в таблицу MySQL с проверкой - PullRequest
0 голосов
/ 23 февраля 2011

Я хочу импортировать большой файл CSV (около 12MO) в таблицу MySQL, сначала я попытался с LOAD DATA INFILE, он работает отлично, но в моем случае я хочу сначала проверить строки CSV, чтобы определить, хочу ли я обновить данные или вставить новые записи поэтому решение состоит в том, чтобы прочитать файл и сравнить содержимое каждой строки с данными, уже имеющимися в таблице, и выполнить правильное действие. этот метод также работает, но требует много времени и ресурсов

теперь мой вопрос

1: могу ли я использовать функции импорта PHPMYADMIN (с открытым исходным кодом) и мой проект коммерческий

2: если да, я могу, знаете ли вы некоторые уроки по этому поводу (любая идея)

3: если нет, я не могу, существуют ли такие коммерческие структуры для экспорта / импорта

спасибо

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Это на самом деле довольно распространенный SQL: вы либо хотите вставить, либо обновить, да? Таким образом, вам нужно два оператора (один для обновления, один для вставки) и способ сказать, если он должен быть вставлен. Что вам действительно нужно, так это уникальный ключ, который никогда не будет дублироваться для отдельной записи (может быть составным ключом) и два оператора, например:

UPDATE right SET
   right1 = left1,
   right2 = left2,
   etc
FROM the_import_table right
LEFT JOIN the_existing_data left ON left.key = right.key
WHERE right.key IS NOT NULL --note that I write in TSQL

INSERT INTO right (
   right1,
   right2,
   etc
) SELECT
   left1,
   left2,
   etc
FROM left
LEFT JOIN right on left.key = right.key
WHERE right.key IS NULL

Обратите внимание, что вы можете использовать составные ключи, используя набор значений ANDed в WHERE, и обратите внимание, что вы не обновляете составные ключи, но, вероятно, вставляете составные ключи. Это должно быть хорошо, чтобы вы начали. Прежде чем просить разъяснений, обновите ваш вопрос, указав фактический код.

1 голос
/ 23 февраля 2011

MySQL имеет специальный синтаксис для вставки для работы с дублирующимися строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...