2015-08-21 26 views
0

堆栈器的MySQL导出表的索引设置为默认

我希望导出一个大的mySql表数据,但不保留索引并将其替换为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

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';" 
+0

感谢您的@Nathan,很好的解决方案。 – elliotrock

+0

没问题,我很高兴它为你工作! – Nathan