it-swarm.asia

Bagaimana cara mencatat keluaran verbose dari mysqldump?

Anda biasanya menyimpan output verbose dari perintah Linux seperti ini:

# command > output.txt

Tetapi ketika Anda menggunakan perintah seperti mysqldump, opsi > Menghasilkan dump dari tabel database ke file yang diinginkan:

# mysqldump --username=whatever --password=whatever -h localhost database > dump.sql

Jika Anda menambahkan opsi -v (Verbose) ke mysqldump, itu akan menampilkan informasi bantuan tentang apa yang dilakukan perintah. Bagaimana cara menyimpan output verbose ini ke file karena opsi > Digunakan untuk menampilkan informasi tabel database ke file?

Lebih khusus lagi, saya membuang output dari satu database ke database lain seperti ini:

mysqldump -alv -h 123.123.123.123 --user=username [email protected] --add-drop-table databasename | mysql --user=username [email protected] -h localhost localdatabase

Saya mencoba yang berikut tetapi file output pada akhirnya kosong

mysqldump -alv -h 123.123.123.123 --user = username --password = p @ ssw0rd --add-drop-table databasename | mysql --user = username --password = p @ ssw0rd -h localhost localdatabase> output.log

Juga mencoba yang berikut ini, tetapi mengalihkan informasi database ke output.log alih-alih databse target:

mysqldump -alv -h 123.123.123.123 --user=username [email protected] --add-drop-table databasename > output.log | mysql --user=username [email protected] -h localhost localdatabase

Dan saya juga tidak melihat opsi --log-file=FILE Untuk mysqldump.

11
Jake Wilson

Mysqldump pertama Anda membuat struktur tabel dan INSERT dan meletakkannya di dump.sql.

Dump kedua Anda adalah dump jarak jauh yang disalurkan langsung ke mysql di localhost.

Jika Anda mencoba menangkap output apa pun berdasarkan kesalahan, coba ini:

mysqldump -alv -h 123.123.123.123 --user=username [email protected] --add-drop-table databasename 2> output.log | mysql --user=username [email protected] -h localhost localdatabase

Menggunakan 2> akan menangkap keluaran berbasis kesalahan (alias stderr). Mysqldump masih harus menyalurkan output konsol normal (alias stdout) ke sesi mysql lainnya dan memuat data sebagaimana dimaksud.

CONTOH: Saya memiliki database kecil yang disebut sampel di PC saya.

Saya menjalankan ini:

C:\LWDBA>mysqldump -u... -p... --verbose sample 2>sample.txt > sample.sql

C:\LWDBA>type sample.txt
-- Connecting to localhost...
-- Retrieving table structure for table users...
-- Sending SELECT query...
-- Retrieving rows...
-- Disconnecting from localhost...

C:\LWDBA>type sample.sql
-- MySQL dump 10.13  Distrib 5.5.12, for Win64 (x86)
--
-- Host: localhost    Database: sample
-- ------------------------------------------------------
-- Server version       5.5.12-log

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `users_tbl_points` int(11) NOT NULL,
  `users_tbl_rank` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `users_tbl_points` (`users_tbl_points`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` VALUES (1,785523,9),(2,443080,20),(3,858830,7),(4,964909,3),(5,248056,24),
(6,345553,21),(7,983596,2),(8,881325,6),(9,455836,19),(10,635204,16),(11,808514,8),
(12,136960,28),(13,259255,22),(14,885399,5),(15,649229,15),(16,589948,18),(17,2055,30),
(18,240429,25),(19,195981,26),(20,258620,23),(21,705158,12),(22,749931,11),(23,634182,17),
(24,921117,4),(25,703038,13),(26,751842,10),(27,650093,14),(28,994943,1),(29,24437,29),
(30,137355,27);
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_SQL_NOTES */;

-- Dump completed on 2012-03-02 15:49:54

C:\LWDBA>

Cobalah !!!

9
RolandoMySQLDBA

mysqldump -v output ke aliran stderr sehingga Anda hanya perlu mengarahkan ulang itu

mysqldump -alv -h 123.123.123.123 --user=username [email protected] --add-drop-table databasename 2> dump.log | mysql --user=username [email protected] -h localhost localdatabase

contoh

 [email protected]: ~ > mysqldump -v -u root mysql > /dev/null 2> output.log
 [email protected]: ~ > cat output.log 
 -- Connecting to localhost...
 -- Retrieving table structure for table columns_priv...
 -- Sending SELECT query...
 -- Retrieving rows...
 -- Retrieving table structure for table db...
3
R. S.