2010-05-13 58 views
1

我使用Export> Copy(而不是Copy> SQL,它實際上是我需要的)使用PHPPgadmin進行PostgreSQL備份。SQL:將備份文件從複製格式轉換爲插入格式

文件包含的條目是這樣的:

COPY tablename(id, field) FROM stdin; 
... 

如何這個文件到SQL格式轉換?

INSERT INTO tablename... 

我想使用Pgadmin來使用執行SQL命令導入此文件。

+0

您的意思是phpPgAdmin,不是嗎? (Pgadmin是桌面客戶端) – leonbloy 2010-05-13 16:19:03

回答

3

您不能將其轉換爲SQL格式(至少不能直接)。

如果您不能再出口,那麼簡單的選擇是繞過phpPgAdmin的, 登錄在你的服務器和運行像

cat [yourdump.sql] | psql [your connections args] 

如果您不具備對服務器的shell訪問,您可以嘗試上傳文件(通過SFTP或FTP)並通過"COPY <table> FROM <path_to_file_on_server>"通過phpPgAdmin加載。但是如果有很多表格,你必須(我相信)分割文件並一次完成一個表格。

http://phppgadmin.sourceforge.net/?page=faq

1

我不知道一種方法或工具,它可以「COPY」轉換成「INSERT」語句。

但是使用「pg_dump」命令行工具,您可以使用「INSERT」而不是「COPY」語句創建數據庫轉儲文件。簡單的使用「--column-inserts」參數(可能是「--inserts」也適合你)。

編輯:

你可以做的是:

  1. 在本地計算機上創建一個新的Postgres數據庫
  2. 導入您的數據庫轉儲文件到新創建的數據庫

    psql -U <dbuser> <database> < dump.sql 
    
  3. 然後用「--c」創建一個postgres轉儲olumn-插入」從該數據庫

    pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql 
    
1

你可以試試,因爲PostgreSQL的9.3

例如COPY FROM PROGRAM語法,可用: COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'