[MySQL Workbench 6.2 on Windows7]
I can export the query results clicking in the MySQL workbench export icon. See image below:
However, I need to do this repeatedly in different loops, so I would like to include it in my script.
I have tried:
SELECT * from TABLENAME where ID = 123456 INTO OUTFILE 'C:/Users/username/Desktop/test.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
I also tried the filepath with \\ instead of /, and also with LINES TERMINATED BY '\r \n' as I have seen in other posts.
When I tried this, I get Permission Denied [Errcode 13] despite I have grated my user file permissions in the MySQL command client too with the following code:
USE mysql;
UPDATE user SET File_priv = 'Y' WHERE User = 'db_user';
FLUSH PRIVILEGES;
Any ideas why it is still not working? Any good alternative is also welcome!
This is due to folder access permission for mysql. So use below path to write csv file.
C:\\Users\\<user_name>\\AppData\\Local\\Temp
Let suppose your system has user name ABC then your query should be.
SELECT * from TABLENAME where ID = 123456 INTO OUTFILE 'C:\\Users\\ABC\\AppData\\Local\\Temp\\test.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
Related
In an attempt to export data from MySQL to a .csv file, I execute the following:
SELECT 'BAT_POSITION_IN_SERIES', 'NUMBER_OF_PITCHES', 'PCT_BALLS', 'PCT_CALLED_STRIKE', 'STRIKEOUTS_PER_PITCH', 'WALKS_PER_PITCH', 'HITS_PER_PITCH', 'RUNS_PER_PITCH'
UNION
SELECT *
FROM per_pitch_summary
INTO OUTFILE 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\per_pitch_summary.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ','
ESCAPED BY '"'
LINES TERMINATED BY '\n' ;
however I am unable to see the Uploads folder as indicated in the file path. It must exist, because when I re-execute the query, I receive an error message indicating the .csv file already exists. Any suggestions? Why would I not be able to see the folder?
When I trying to export Mysql DB to CSV like SELECT * INTO OUTFILE '/tmp/test.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM reviewdb1;
I get error
ERROR 1046 (3D000): No database selected
However I sign reviewdb1 properly.
So I switch to reviewdb1
mysql> use reviewdb1
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT * INTO OUTFILE '/tmp/test.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM reviewdb1;
ERROR 1146 (42S02): Table 'reviewdb1.reviewdb1' doesn't exist
and it seems like something wrong in my query (syntax)
Could you give me advice, what exactly ?
Thanks in advance.
Update:
it's dawn on me I should sign TABLE in the DATABASE which I want to export to .csv.
SELECT * FROM account_diff_preferences INTO OUTFILE '/var/lib/mysql-files/test.csv' FIELDS TERMINATED BY ',';
this command works fine, but may I export whole database like this or only one table from database per command accepted ?
now I realize it was pretty stupid question.
excuse me.
Code for windows environment is below:
SELECT *
INTO OUTFILE '/documents/products.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM products
Just need the 2nd line for MAC environment - thanks.
First of all you need to put your FROM clause before INTO OUTFILE.
Second, be sure that the directory specified in OUTFILE has the ability for MySQL to write to it (in your case /documents). You'll have a much easier time writing to /tmp (MySQL already has permissions to write by default) than trying to change permissions on another directory to accept writes form your MySQL database.
SELECT *
FROM products
INTO OUTFILE '/tmp/products.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n';
I've a database and im trying to export the data from a table to a .csv file so that i can import the data as contact data. I can create the file and write to it using this syntax:
SELECT E_Name, Email INTO OUTFILE '/xampp/tmp/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM email WHERE 1
the problem is when i run this a 2nd time, i get an error that the file already exists. (im aware it exists as i've previously ran the query and it created it) What i would like to happen is to either, check the information is there from before and add the new information, or simpler again, overwrite the original file with the updated version.
could anyone throw some information on how to do this?
Thanks in advance,
Andrew
///////////edit\\\\\\\\\\\\\\
okay, decided to go for the timestamp method as ^^^^ cannot really be done. however im now running into an error for this aswell :$
CONCAT(SELECT E_Name, Email INTO OUTFILE '/xampp/tmp/Sample', DATE_FORMAT(now(), '%d%m%Y'), '.csv')
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM email WHERE 1
Can anyone help me with this concat problem? unexpected IDENT_QUOTED
I am trying to export a table from a remote server to my desktop computer in csv format. I have this code:
select * from order
into outfile 'C:\Users\Sleep Shop\Desktop\MySQL Scripts/outfile.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n';
but I get this error:
failed : Can't create/write to file '/var/lib/mysql/C:\Users\Sleep Shop\Desktop\MySQL Scripts/outfile.csv' (Errcode: 2)
I'm thinking there is something fundamental I don't understand about this procedure, probably something to do the table being at a remote server. Can anyone help?
I used this code to tell a spot on the server to create the file:
select * from orders
into outfile '/var/www/test/outfile.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n';
It creates the file but it contains no records and I get this error:
failed : Field separator argument is not what is expected;
Change the query like this:
select * from `order`
into outfile 'export.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n';
Then you will find the file in your remote server's directory here: /var/lib/mysql/export.csv (or possibly /var/lib/mysql/data/your-db-name/export.csv)
Connect to your server via SSH (use putty) and transfer the file to your PC or move the file to a directory that accepts FTP access and you can download it using an FTP client (ie. filezilla, winSCP).
Or you can use phpMyAdmin and click on the table, then click the "export" tab, and then you will see an option to select "CSV" from the format dropdown. This may not work if your table is too large (depends on phpMyAdmin's settings or PHP's settings on how long a script can run).