MySQL导出表,索引设置为DEFAULT

时间:2015-08-21 02:18:15

标签: mysql

堆垛' S

我希望导出一个大的mySql表数据但不保留索引并用DEFAULT替换它们。因此,当我将其导入测试环境时,我不会覆盖该表的当前索引。

所以基本上每行当前索引值都被DEFAULT替换,所以INSERT使用自动增量来获取新索引:

INSERT INTO `user_history` (`n`, `user_uid`, `history_id`, `type`, `meta_uid`, `modified`) VALUES
(DEFAULT, '3abc3eaf0b3e', 1, 'color', '1', '2015-07-29 08:01:52'),
(DEFAULT, '3abc3eaf0b3e', 1, 'size', '2', '2015-07-29 08:01:52');

这只是一个例子。我不能简单地手动编辑文件,因为它很大。

10mil +1

谢谢

1 个答案:

答案 0 :(得分:1)

https://dev.mysql.com/doc/refman/5.1/en/select-into.html

SELECT NULL, `user_uid`, `history_id`, `type`, `meta_uid`, `modified`
FROM `user_history`
INTO OUTFILE '<file name here>.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

默认情况下,除非在命名文件时明确给MySQL指定路径,否则文件将输出到您的数据目录中。

通过命令行加载文件:

mysql -u <user> -p <database for new table> -e "LOAD DATA INFILE '<file name>.csv'
          INSERT INTO TABLE `user_history`
          FIELDS TERMINATED BY ','
          ENCLOSED BY '\"'
          LINES TERMINATED BY '\n';"