2014-02-20 1 views
0

Я экспорт таблицы с помощью -Как экспортировать таблицу в плоский файл с другим именем в mysql?

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

Теперь я хочу, чтобы запустить этот скрипт ежедневно, поместив его в порядке. И я хочу использовать имя файла «результат» с датой или другим динамическим числом, которое я могу увеличить ежедневно. В противном случае это даст мне ошибку для дубликата имени файла.

Я должен быть как -

declare var_result varchar(100); 
set var_result = 'result01012014'; 
SELECT * INTO OUTFILE var_result 
................................ 

Возможно ли это?

ответ

1

Вместо создания Stored Procedure Вы можете создать shell or php сценарий для одной и той же

Пример скрипта, который я обычно использую

#!/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 

Это создаст имя файла как City-2014-02-20.csv

хранимой процедуры сделать то же самое

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

это полезно, но я хочу сделать это, используя вышеприведенную технику. Поэтому, пожалуйста, позволь мне, если есть способ разобраться в этом. – Aamir

Смежные вопросы