首頁 > 後端開發 > php教程 > MySQL 如何複製表 – 快速提示

MySQL 如何複製表 – 快速提示

WBOY
發布: 2024-08-21 21:03:15
原創
1077 人瀏覽過

最近我必須處理我的資料庫提供者的一些限制,它不支援表重命名。所以我不得不手動複製一個表格。

我的 SaaS 平台的資料庫託管在 Planetscale 上。該公司提供相容 MySQL 的無伺服器資料庫。由於其無伺服器特性,您可以獲得水平分片、非阻塞模式變更以及許多更強大的資料庫功能的強大功能,而無需實施它們。以及出色的開發者體驗。

從另一個角度來看,您必須處理有關架構變更的一些限制。需要這些限制來確保分片環境中的一致性。

自從我成為客戶(大約兩年前)以來,他們取得了很大的進步,例如對外鍵約束的支援:https://planetscale.com/docs/concepts/foreign-key-constraints

重新命名表

Inspector 是一個 Laravel 應用程式。使用 Laravel 遷移,我可以使用重新命名函數來簡單地更改表格的名稱:

Schema::rename('from', 'to');
登入後複製

Planetscale 本身不支援表重命名。所以我必須找到一個解決方法來完成任務。

說實話,重新命名表是一個相當罕見的操作。對我來說,這是因為“專案”和“應用程式”實體之間的名稱重疊。我不得不重命名項目 ->應用程式。

如何在 MySQL 中複製表

在 MySQL 複製表格有兩種方法。

複製表結構

您可以只複製沒有資料的表結構(列、鍵、索引等),使用 CREATE TABLE … LIKE:

CREATE TABLE applications LIKE projects;
登入後複製

結果是建立了應用程式表,其結構與原始項目表完全相同,但沒有資料。

要匯入數據,您可以執行第二條語句 INSERT INTO … SELECT:

INSERT INTO applications SELECT * FROM projects;
登入後複製

在大表上執行此語句時要小心,因為它可能會佔用大量時間和伺服器資源。

僅重複列定義

第二個選項是僅複製列定義並使用 CREATE TABLE … AS SELECT 在一條語句中匯入資料:

CREATE TABLE applications AS SELECT * FROM projects;
登入後複製

新的應用程式表僅繼承項目表的基本列定義。它不會重複外鍵約束、索引和自動增量定義。

當您擁有與表名稱相關的索引名稱和鍵名稱時,此選項可能很有用。更改表格的名稱必須替換約束的名稱。你最好根本不要導入它們並重新進行。

資源

資料庫始終是任何階段開發者的熱門話題。您可以在部落格上找到其他技術資源。以下是有關該主題的最受歡迎的文章:

  • 已解決 - 違反完整性限制
  • 使用 Laravel 預先載入節省 100 萬次查詢
  • 如何擴充 SQL 資料庫
  • 已解決 – 使用 Laravel 佇列和作業超出 MySQL 鎖定等待逾時

督察新人?免費監控您的應用程式

Inspector是一款專為軟體開發人員設計的程式碼執行監控工具。您不需要在伺服器層級安裝任何內容,只需安裝 composer 套件 就可以開始了。

與其他複雜的一體化平台不同,Inspector 超級簡單,並且對 PHP 友善。您可以嘗試我們的 Laravel 或 Symfony 套件。

如果您正在尋找有效的自動化、深刻的見解以及將警報和通知轉發到訊息傳遞環境的能力,請免費嘗試 Inspector。註冊您的帳戶。

或在網站上了解更多:https://inspector.dev

MySQL How To Duplicate A Table – Fast Tips

以上是MySQL 如何複製表 – 快速提示的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板