2012-05-21 31 views
8

Tengo una tabla en una base de datos y me gustaría actualizar una columna que tengo sin conexión en un archivo local. El archivo consta de dos columnasActualizar la tabla de MySQL desde un archivo local

  1. un identificador que corresponde a una columna ID de la tabla, y
  2. el valor real.

he sido capaz de crear nuevas filas usando

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

Pero no estoy seguro de cómo me puedo insertar específicamente los valores de tal manera que la columna de ID en el archivo se unió a la Columna ID en la tabla. ¿Alguien puede ayudar con la sintaxis de SQL?

Respuesta

9

Le sugiero que cargue sus datos en una tabla temporal, luego use un INSERT ... SELECT ... ON DUPLICATE KEY UPDATE; por ejemplo:

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

Otra forma podría ser ...

Puesto que usted ya conoce el nombre de la tabla y tiene la ID y el valor real ... lo que puede hacer es escribir directamente al ... actualizar las declaraciones en un archivo, como

update mytable set value_col = value where ID_col = ID; 

Second Update Statement 

Third Update statement 

....... 

Guardar el archivo como *.sql como, updatescript.sql y luego ejecutar ese script directamente como

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

Depende del n. ° de filas, Si está en cientos haga una secuencia de comandos de la columna de actualización y ejecútela, pero si está en gran volumen, importe ese archivo a una nueva tabla y actualice su tabla con una combinación, y luego soltar la tabla

+0

Ohh eggyal ya ha publicado lo que estoy hablando aquí – PandeyTheDBA

Cuestiones relacionadas