Вопрос по mysql, sql – Обновить таблицу MySQL из локального файла

9

У меня есть таблица в базе данных, и я хочу обновить столбец, который у меня отключен, в локальном файле. Сам файл имеет две колонки

an ID which corresponds to an ID column in the table, and the actual value.

Мне удалось создать новые строки, используя

LOAD DATA INFILE 'file.txt' INTO TABLE table
  FIELDS TERMINATED BY ','

Но я не уверен, как конкретно вставить значения таким образом, чтобы столбец идентификатора в файле был соединен со столбцом идентификатора в таблице. Может кто-нибудь помочь с синтаксисом SQL?

Ваш Ответ

3   ответа
10

а затем использоватьINSERT ... SELECT ... ON DUPLICATE KEY UPDATE; например:

CREATE TEMPORARY TABLE temptable (
  id  INT UNSIGNED NOT NULL,
  val INT,
  PRIMARY KEY (id)
) ENGINE = MEMORY;

LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO temptable FIELDS TERMINATED BY ',';

INSERT INTO my_table
SELECT id, val FROM temptable
ON DUPLICATE KEY UPDATE val = VALUES(val);

DROP TEMPORARY TABLE temptable;
6

Поскольку вы уже знаете, что имя таблицы также имеет идентификатор и фактическое значение ... что вы можете сделать ... напрямую записать операторы обновления в файл, например:

update mytable set value_col = value where ID_col = ID;

Second Update Statement

Third Update statement

.......

Сохранить файл как*.sql лайк,updatescript.sql а затем выполнить этот скрипт прямо как

mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql"
0

Если он исчисляется сотнями, создайте скрипт столбца обновления и запустите его, но, если он находится в большом объеме, импортируйте этот файл в новую таблицу и обновите таблицу с помощью объединения, а затем отбросьте таблицу

Error: User Rate Limit Exceeded

Похожие вопросы