| 特性 | MySQL | SQL Server |
|---|---|---|
SELECT * INTO new_tbl FROM old_tbl |
❌ 不支援(語法錯誤) | ✅ 建立新表並複製結構+資料 |
SELECT ... INTO OUTFILE |
✅ 導出資料到文件 | ❌ 不支援(用 BCP/SSIS) |
CREATE TABLE ... SELECT |
✅ 建表+複製資料(無索引/約束) | ✅ 同樣支援 |
CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;
CREATE TABLE new_table LIKE old_table;
-- 或
CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;
CREATE TABLE new_table AS SELECT * FROM old_table;
-- 等同於
CREATE TABLE new_table (SELECT * FROM old_table);
⚠ 注意:不會複製主鍵、索引、外鍵、AUTO_INCREMENT、觸發器。
# 導出結構+資料
mysqldump -u root -p --single-transaction --default-character-set=utf8mb4 db_name old_table > table.sql
# 修改表名(sed 或編輯器)
sed -i 's/`old_table`/`new_table`/g' table.sql
# 導入
mysql -u root -p db_name < table.sql
SELECT *
INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM my_table
WHERE created_at > '2024-01-01';
FILE 權限:GRANT FILE ON *.* TO 'user'@'host';secure_file_priv 限制)SHOW VARIABLES LIKE 'secure_file_priv';SELECT * INTO OUTFILE 'C:/exports/data.csv' ... -- 正斜線或雙反斜線
-- 錯誤寫法:'C:\exports\data.csv' (\e 被轉義)
# 導出慢查詢分析
SELECT * INTO OUTFILE '/var/lib/mysql-files/slow_queries.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10000;
| 需求 | 推薦方法 | 優點 | 缺點 |
|---|---|---|---|
| 同庫複製表(含索引) | CREATE TABLE ... LIKE + INSERT | 保留完整結構 | 兩步驟 |
| 同庫複製表(僅結構+資料) | CREATE TABLE ... AS SELECT | 單條語句 | 丟失索引/約束/自增 |
| 跨庫/跨實例遷移 | mysqldump + sed 改名 | 完整結構、壓縮傳輸 | 需磁盤空間、較慢 |
| 導出 CSV/文本供外部系統 | SELECT INTO OUTFILE | Server 端直寫、高效能 | 需 FILE 權限、路徑限制 |
| 應用層導出 | 程式碼查詢 + CSV 庫 | 靈活、無權限限制 | 網路傳輸、記憶體壓力 |
CREATE TABLE ... LIKE 保留索引/約束INSERT ... SELECT ... LIMIT 10000 OFFSET ...SELECT COUNT(*) FROM old_table; SELECT COUNT(*) FROM new_table;SHOW TABLE STATUS LIKE 'new_table';MySQL 不支援 SELECT INTO table,標準替代方案是 CREATE TABLE new_table LIKE old_table; INSERT INTO new_table SELECT * FROM old_table;。導出文件用 SELECT INTO OUTFILE,注意 secure_file_priv 限制。跨實例遷移首選 mysqldump。理解差異、選對工具、驗證數據,是資料庫操作的基本功。