how to export table into flat file with different name in mysql?

后端 未结 1 1976
[愿得一人]
[愿得一人] 2021-01-29 03:36

I am exporting a table using -

SELECT * INTO OUTFILE \'d:\\\\result.txt\'
FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'\"\'
LINES TERMINATED BY  \'\\n\'
F         


        
相关标签:
1条回答
  • 2021-01-29 04:25

    Instead of creating Stored Procedure You can create a shell or php script for the same

    Example of a shell script that I usually use

    #!/bin/bash
    
    location="/home/abdul/Desktop"
    user="root"
    pass="root"
    table="City"
    database="world_innodb"
    
    mysql -u$user -p$pass --column-names -e "SELECT * FROM $database.$table;" | sed 's/\t/"|"/g;s/^/"/;s/$/"/;s/\n//g' > $location/$table-$(date +"%Y-%m-%d").csv
    

    This will create file name like City-2014-02-20.csv

    Stored procedure to do the same

    DROP PROCEDURE IF EXISTS ExportToCSV;
    
    DELIMITER $$
    
    CREATE PROCEDURE `ExportToCSV`()
    
        BEGIN
        SET @cur_date =  CURRENT_DATE();
        SET @path = "/tmp/";
        SET @table_name =  "City";
    
        SET @VarSQL = CONCAT('SELECT * INTO OUTFILE  \'' ,@path,@table_name,'-',@cur_date,'.csv\' FIELDS TERMINATED BY ''\,','\' OPTIONALLY ENCLOSED BY \'','"' ,'\' LINES TERMINATED BY \'','\\n','\' FROM ',@table_name,';' );
    
        PREPARE stmt FROM @VarSQL;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    
        END$$
    
    DELIMITER ;
    
    0 讨论(0)
提交回复
热议问题