So we could consider to import this data to a temporary table to achieve this, and to ensure not to alter the database schema at all.
Let's say we have a table like this:
mysql> SELECT * from User; +------+----------+-------------+------------+ | id | name | last_name | sport | +------+----------+-------------+------------+ | 1000 | Oscar | Soliz | cycling | | 1001 | Wendy | Cornejo | athletics | | 1002 | Karen | Torrez | swimming | | 1003 | Rosemary | Quispe | marathon | | 1004 | Stefany | Coronado | athletics | | 1005 | Jose | Quintanilla | swimming | +----+------------+-----------+--------------+
And a CSV file which content some ids:
id 1002 1004 1005
Now, assume we have the following scenario:
"Given a list of User IDs (CSV file), we want to know the name and sport of these people."
Steps:
1. Create a temporary table:
CREATE TEMPORARY TABLE user_ids (id INT(11));
2. Import data from the CSV file:
LOAD DATA INFILE "/file_path/user_ids.csv" INTO TABLE user_ids COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES; # To ignore headers (first row)
3. Finally you can build the query and work like it is one more table in the database, e.g:
SELECT CONCAT(u.name, ' ', u.last_name) name, u.sport FROM User u WHERE u.id IN (SELECT id FROM user_ids);
+------------------+------------+ | name | sport | +------------------+------------+ | Karen Torrez | swimming | | Stefany Coronado | athletics | | Jose Quintanilla | swimming | +------------------+------------+
No comments:
Post a Comment