我想知道mysqldump参数是为了进入一个目录,每个表格都是CSV格式(分隔+描述第一行)。我不喜欢'想要任何其他文件,如.sql。
例如,如果我在架构中只有以下表格
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`lastname` varchar(45) NOT NULL,
`email` varchar(320) NOT NULL,
) ENGINE=InnoDB
在输出中,我只会得到像这样的user.csv文件
id;name;lastname;email
1;"Mark";"Lenders";"mark@gmail.com"
...
如果可能,我还想只包含varchar字段。
我使用这个mysqldump调用
mysqldump -u root -p -t -T /tmp dbschema --fields-enclosed-by=\" --fields-terminated-by=;
但我仍然有这些错误:
Server有一个Debian6操作系统。
谢谢!
答案 0 :(得分:1)
DELIMITER $$
CREATE PROCEDURE write_tables_to_csv()
BEGIN
DECLARE ts, tn VARCHAR(64);
DECLARE cur CURSOR FOR SELECT table_schema
, table_name
FROM
information_schema.tables
WHERE
table_schema = 'test'
AND table_name LIKE 'table1%';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur;
REPEAT
FETCH cur INTO ts, tn;
IF NOT done THEN
SET @sql = CONCAT('SELECT * FROM ', ts, '.', tn, ' INTO OUTFILE ''', tn, '.csv'' FIELDS OPTIONALLY ENCLOSED BY ''"''');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END IF;
UNTIL done
END REPEAT;
CLOSE cur;
END
$$
DELIMITER ;
此过程读取表名,生成SELECT语句并执行它们。 更改架构和表的条件。
修改强>
此外,您可以使用dbForge Studio for MySQL中的数据导出工具。它也可以同时以任何格式导出一些表格。 CSV格式写入列标题,字符串字段用指定的符号括起来。