What is the SQL command to save data in EXCEL sheet? - mysql

There is a manual option to export the SQl data into CSV but I am looking for SQl command that can save data directly into CSV.

SELECT ... INTO OUTFILE 'file_name'
For examlpe:
SELECT customer_id, firstname, surname INTO OUTFILE '/exportdata/customers.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM customers;

MYSQL TO CSV COMMAND
SELECT fields
FROM table
WHERE conditions
INTO OUTFILE 'PATH AND FILE'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
The CSV file contains lines of rows in the result set. Each line is terminated by a sequence of carriage return and a line feed character specified by the LINES TERMINATED BY '\r\n' clause. Each line contains values of each column of the row in the result set.
Each value is enclosed by double quotation marks indicated by FIELDS ENCLOSED BY '”' clause. This prevents the value that may contain a comma (,) will be interpreted as the field separator. When enclosing the values by the double quotation marks, the commas inside the value are not recognized as the field separators
more options (headers, timestamp columns..):
https://www.mysqltutorial.org/mysql-export-table-to-csv/
Another option is the accepted answer to this stackoverflow question:
stackoverflow.com/questions/3760631/mysql-delimiter-question
DB2 to CSV
db2 CALL SYSPROC.ADMIN_CMD( 'EXPORT TO "C:\UTILS\export.csv" OF DEL MESSAGES ON SERVER SELECT * FROM FASTNET.WLOOKUPTABLEENTRIES' )

Related

MySQL Query CSV to output not a file

I want to make a select to mySQL and return the resulting recordset as CSV but not saving it into a file.
I have this:
SELECT order_id,product_name,qty
FROM orders
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
I have tried to change it into:
SELECT order_id,product_name,qty
FROM orders
WHERE foo = 'bar'
INTO #out
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
But it doesn't work.
The use case is to give users the option to download CSV files from data driven web site. To do so I need to output the CSV file/data to the browser.
How to do?
You can not directly and you need to import data first in a table.Mysql command for this https://dev.mysql.com/doc/refman/8.0/en/load-data.html

MySQL - how to use ENCLOSED BY in SELECT query?

I need Select query which will at the end write the result into the file.
I would like to have as output columns with double quotes separated, and I would like to have comma between the fields, but I am getting an error that query is not correct.
select hostname,ip
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
FROM TABLE1
As output I would like to get:
"hostname1","ip1"
"hostname2","ip2"
...........
Is this possible?
Thanks
You can try below -
for reference, you can check here
SELECT hostname,ip INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM test_table

MySQL Load Data Query: Issue with Backslash ( \ )

I have I have a huge csv file with 149 column and 25K+ rows to upload this file in MySQL table I am using MySQL LOAD DATA Query
MY Query is:
LOAD DATA local INFILE '/Dir/file.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES
My query is working fine, the problem comes when my file has any Backslash (\) characters, the column value get disturb and file cell value not inserting in correct columns. is there any fix for this issue.
Thanks
LOAD DATA local INFILE '/Dir/file.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\b' LINES TERMINATED BY '\n' IGNORE 1 LINES
Use '\b' as escape character instead of '\' in your query.

Export table mysql data with retaining data-types?

I have a table which has int and string data types in them. I need to export the data and need to retain the data-types. The method I am using to export the data rightnow puts the quotation marks around all of the data
SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
I want the double quotes to be around the varchar?
How about
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
If you specify OPTIONALLY, the ENCLOSED BY character is used only to enclose values from columns that have a string data type (such as CHAR, BINARY, TEXT, or ENUM)
Ref https://dev.mysql.com/doc/refman/5.7/en/load-data.html

How to import CSV into mysql if values contains comma

I've a CSV file where values may have comma as part of value
"09200, France, Paris", "Tower ""Olivia"""
"09200, Spain, Barselona", Shop - perfect
However once I import data it breaks value on 4 columns (based on number of comma in row). What do I do wrong? Please see my import command below.
LOAD DATA LOCAL INFILE '~/Downloads/file.csv' INTO TABLE my_table CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (#col1,#col2) set address=#col1,name=#col2;
Add an ENCLOSED BY clause to your query:
LOAD DATA LOCAL INFILE '~/Downloads/file.csv'
INTO TABLE my_table
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(#col1,#col2) set address=#col1,name=#col2;