我有一個MySQL數據庫,我試圖找到一種方法來導出其結構只有,沒有自動增量值。 mysqldump --no-data
幾乎可以完成這項工作,但它保留了auto_increment值。有沒有辦法做到這一點,而不使用PHPMyAdmin(我知道它可以做到這一點)?mysqldump - 只有輸出結構沒有自動增量
回答
你可以這樣做:正如其他人所提到
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//' > <filename>.sql
,如果你想sed
到正常工作,加上g
(爲摹葉形更換)參數如下:
mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > <filename>.sql
(只有在安裝了GUI工具時纔可以使用:mysqldump --skip-auto-increment
)
最後一個很好。謝謝。 – Paris 2013-03-27 11:27:16
我不認爲'--skip-auto-increment'是一個真正的選擇。我無法在[documentation](http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html)中找到它。這個問題的兩個MySQL錯誤都沒有提到它:[20786](http://bugs.mysql.com/bug.php?id=20786),[30957](http://bugs.mysql.com/bug .PHP?ID = 30957)。哪個版本的mysqldump具有此選項? – Rich 2013-06-18 10:21:38
'--skip-auto-increment'是MySQL GUI工具中添加的一個選項,如果沒有記錯的話。 (不知道^^)所以實際上它不是一個真正的解決方案! 但第二個內聯命令是正確的,我創建它[這裏](http://bugs.mysql。com/bug.php?id = 20786)其中話題討論** autoincrement **問題,並提供'sed'過濾的想法! – JoDev 2013-06-20 09:27:19
mysq ldump -u [USER] -p [PASSWORD] -d --skip-opt --single-transaction [DB_SCHEMA]> [FILE.ESTENSIONE]
它是--create-options,包含在 - opt,默認情況下,它會生成AUTO_INCREMENT表定義。
如果只想基表,
mysql -hlocalhost -uuser -ppass --skip-column-names --batch \
-e "select table_name from tables where table_type = 'BASE TABLE' and table_schema = 'schemaname'" INFORMATION_SCHEMA \
| xargs mysqldump -hlocalhost -uuser -ppass \
--no-data --skip-triggers --skip-opt --no-create-db \
schemaname
如果你想視圖,觸發器和程序也
mysqldump -hlocalhost -uuser -ppass \
--skip-opt --events --routines --no-data \
schemaname
請注意,這也會刪除任何自動增量字段,「drop table」,字符集等。 – Deanna 2015-10-08 13:02:40
JoDev的回答非常完美,我有一個小的調整,以sed的常規表達:
mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed 's/ AUTO_INCREMENT=[0-9]*//g' > databaseStructure.sql
感謝這篇文章,我能夠回答我的問題:
如何在我的數據庫上進行版本控制?
然後我剛剛創建的這個腳本:db_bkp.sh
#!/bin/sh
filename="db_structure.sql"
backupfolder="/var/www/"
fpath="$backupfolder/$filename"
usr="DBUSER"
pass="DBPASS"
db="DBNAME"
mysqldump --user=$usr --password=$pass --no-data $db | sed 's/ AUTO_INCREMENT=[0-9]*//g' > "$fpath"
然後我說這的crontab:
30 5 * * * sh /home/scripts/db_bkp.sh
然後在我的回購我加的結果,db_structure.sql
到Git和前推改變刺激我總是檢查是否有任何結構變化,我忘了在所有dbs上做。
- 1. MySQLDump沒有導出數據或結構
- 2. 只有mysqldump架構,架構更新沒有drop
- 3. mysqldump腳本沒有返回gzip輸出後的預期結果
- 4. MySQLdump沒有數據導出
- 5. MysqlDump - 無增量
- 6. Mysqldump只有在嘗試輸出到文件時纔會出錯
- 7. 僅在導出結構時重置自動增量
- 8. 自動增量字段沒有被自動設置
- 9. 有沒有辦法讓SAS只輸出重要結果?
- 10. mysqldump大量分貝增量
- 11. mysqldump的結果,沒有實質內容
- 12. 如何查找所有沒有自動增量的主鍵
- 13. 有沒有辦法讓自動增量字段前綴000?
- 14. 重置自動增量有沒有什麼壞處?
- 15. Scrapy輸出只有最後增量更新的項目
- 16. C++ ofstream沒有寫出來自結構數組的所有輸入
- 17. ID有自動增量,但也有另一列增量,但不像自動增量
- 18. 嘗試在PHP到mysqldump -v popen和沒有得到輸出
- 19. 自動增量備份sql只有5天
- 20. 語法錯誤或接近「串行」與自動增量只有
- 21. 的MySQL創建臨時表與SELECT自動增量只有
- 22. SQL輸出活動沒有
- 23. Rsync,增量文件列表輸出,但沒有實際複製
- 24. CMake:自動增強下載和構建,如果沒有找到
- 25. PostgreSQL沒有自動遞增功能?
- 26. 如何指定沒有自動遞增
- 27. 有自動遞增
- 28. PHPMyAdmin在沒有自動增量字段的表中如何排序結果
- 29. 每桌有多個自動增量
- 30. 具有自動增量的DB2視圖
它看起來像MySQL 5.5(服務器),'--no-data'默認會省略auto_increment值。 – 2014-10-16 15:00:47
@JoeyAdams你確定嗎?這不是我體驗到的行爲 – aland 2016-02-12 22:59:29
@JoeyAdams MySQL 5.7。*使用--no-data時,*的mysqldump不會省略auto_increment。 – 2016-08-30 11:53:34