in mysql database,how to upload the modified data from csv file - mysql

Initially, I created a database called "sample" and updated the data from massive size CSV file.
Whenever I have small changes in .csv file (some data are added/deleted/modified), I have to update this in database too. Always updating the entire .csv file (large) is not efficient.
Is there any efficient way to update the modified data from .csv file to database?

Assuming that you are using LOAD DATE INFILE for importing from CSV, try using this syntax:
LOAD DATA INFILE 'file_name'
IGNORE
INTO TABLE `tbl_name`
...
...
IGNORE keyword will skip any rows in the CSV that duplicate any existing row in the table causing a conflict with a unique key. Read more here.
This will be more quicker and efficient than importing the complete CSV again.

Related

how to create a mysql table by csv file header?

My goal is to create a MySQL table containing data from my CSV file.
is there any way to do this
i don't know whether it is possible or not thorugh csv. the thing is like i want to generate mysql table using csv headers as filed names i know how to load csv into table which is already created manually but i want to generate table through csv using batch script and below is my batch script to load csv into table through manually
load data local infile "C:\\EQA\\project\\input1.csv"
into table request_table
character set latin1
fields terminated by','
ENCLOSED BY '"'
lines terminated by'\r\n'
IGNORE 1 ROWS
here above code is for to load csv into table in which request_table is existing in db.
but i want to load csv into table dynamically?
is that possible?if so can some one help me out to accomplish this?

Is it possible to append the data from csv file to the existing mysql table

I have a mysql table to which i have imported a csv file and if i try to import another csv file to the same mysql table will it replace the previous data or gets appended????
CSV imports get treated as an INSERT statement which means no UPDATE is performed.

How to generate MySQL databse tables script using mvc application with Entity Framework

As part of automation we want to create MySQL DB script from Existing DB. Actually we can't use EF Code Firts migration because tables are more than 1000. So timeout error will come. So the alternative is generate script from existing db using MVC application.
If you can export your tables data to .csv comma separated value files, you can do a easy migration with LOAD DATA INFILE. My experience is not from db to db. Just from excel to MySQL db. I exported excel sheets as a somedata.csv files. And then I created a table that I need to and I use this scripts to import to MySQL database. I think you can use it.
LOAD DATA INFILE 'somedata.csv' INTO TABLE some_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
So, first you need to create your tables' structure again.
Second, you need to export your data to csv files.
Third, you can do import specific data by using LOAD DATA INFILE.
It is not the entire great way. But It can be fast enough. A table with more than 1 millions record will imported with just a minute. You can see
LOAD DATA INFILE documentation here

How to load and append the data without duplicates using MYSQL LOAD DATA

I have a machine that output the data into a text file.
This text file contains the raw data.
Now I would like to insert the raw data from the text file by using the MYSQL LOAD DATA.
My condition is to append the new data to the existing table without duplicates.
I made raw_data column as primary key.
Everytime i run the LOAD DATA command it terminates when duplicates encountered and will not continue to load the rest of none duplicate raw data.
Example:
LOAD DATA INFILE '/mnt/A3/rawdata.txt' INTO TABLE test(raw_data);
Error Msg:for key 'PRIMARY' Duplicate entry 'aabbcc'
My question is how can I load and append the raw data to existing table without duplicates?
Look at the documentation, keywords REPLACE or IGNORE

MySQL LOAD DATA INFILE unknown number of columns

I am very confused about LOAD DATA INFILE
after searching SO and google I have found no help on what I am attempting to do.
I want to create a new table, and load the contents of a csv file. The csv files first row is the column names I want.
Or if that cannot be done, how can I load the file without knowing how many columns exist?
LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(... unknown number of columns ...);
You're going to need a tool other than mysql to load csvs without a predetermined schema.