2015-05-14 40 views
0

讓我們說,我有以下表中MySQLMySQL的導出表到文本文件中的字段名

create table test_tbl 
(
    col1 varchar(100), 
    col2 varchar(100), 
    amount int, 
    created datetime 
) 

數據插入

Insert into test_tbl values('unu', 'doi', 10, '05/01/2015'); 
Insert into test_tbl values('patru', trei', 400, '04/01/2015'); 

我需要從表中導出以下格式的所有數據。該文件應該是txt文件。

"col1"="unu","col2"="doi","amount"="10","created"="05/01/2015" 
"col1"="patru","col2"="trei","amount"="400","created"="04/01/2015" 

所以邏輯是: 每個列名與由逗號分隔值。

是否有可能在MySQL得到這樣的結果?

回答

1

對於出口表的數據 -

SELECT CONCAT('"col1"="',col1,'","col2"="',col2,'","amount"="',amount,'","created"="',DATE_FORMAT(created,'%d/%m/%Y'),'"') t FROM test_tbl INTO OUTFILE '/tmp/test.txt' CHARACTER SET latin1 FIELDS ENCLOSED BY '' LINES TERMINATED BY '\r\n'; 

導入的表從CSV

mysql> CREATE TABLE `test_tbl` (
    -> `col1` varchar(100) DEFAULT NULL, 
    -> `col2` varchar(100) DEFAULT NULL, 
    -> `amount` int DEFAULT NULL, 
    -> `created` datetime DEFAULT NULL 
    ->) ENGINE=InnoDB DEFAULT CHARSET=latin1 
    -> ; 
Query OK, 0 rows affected (0.44 sec) 

mysql> load data local infile 'test.txt' into table test_tbl fields terminated by ',' ENCLOSED BY '"' lines terminated by '\r\n' (@col1, @col2,@col3,@col4) 
    -> set col1 = substr(@col1,8), col2 = substr(@col2,8), amount = substr(@col3,10), created = str_to_date(substr(@col4,11), '%d/%m/%Y'); 
Query OK, 2 rows affected (0.09 sec) 
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> select * from test_tbl; 
+-------+------+--------+---------------------+ 
| col1 | col2 | amount | created    | 
+-------+------+--------+---------------------+ 
| unu | doi |  10 | 2015-01-05 00:00:00 | 
| patru | trei | 400 | 2015-01-04 00:00:00 | 
+-------+------+--------+---------------------+ 
2 rows in set (0.00 sec) 
+0

是的,這爲我工作,T​​HX –

1

也許這可以工作。

使用CONCAT建立一個字符串,這樣

SELECT 
CONCAT('"col1"="',col1,'","col2"="',col2,'","amount"="',amount,'","created"="',created,'"') t 
FROM test_tbl; 

然後,你還可以將其轉儲到使用INTO OUTFILE一個文本文件。

SELECT 
CONCAT('"col1"="',col1,'","col2"="',col2,'","amount"="',amount,'","created"="',created,'"') t 
FROM test_tbl 
INTO OUTFILE 'C:/yourtextfile.txt' 
CHARACTER SET latin1 
FIELDS ENCLOSED BY '' 
LINES TERMINATED BY '\r\n'; 

由於CONCAT只有1行,你不需要爲封裝與值的列/字段,因爲他們都是定製的。只有換行符用於終止每個ROW

希望它的作品!

相關問題