標籤:執行sql TE 資料匯入 目錄 區分 建立 外鍵 ima lin
最近在用Java重寫之前實習生用.netcore寫的後台應用。
規定用Spring Boot架構,PostgreSQL資料庫。之前一直習慣於基於XML的Spring app,也沒用過PostgreSQL,再加上資料庫設計的不好,還沒有任何代碼文檔,一臉的懵逼。。。
這裡記錄下在重寫過程中遇到的一些問題,便於後期查閱:
1. PostgreSQL 9.6.6:
(1) 使用pgAdmin4, 首先遇到的問題就是啟動過慢,所佔記憶體大,在串連本機資料庫後執行簡單的select耗時不少。個人認為啟動過慢,所佔記憶體大是pgAdmin4的問題,但執行SQL語句慢,估計是配置的問題,目前還沒有在postgresql.conf中找到對應的配置項
(2) 對錶名,列名不區分大小寫,但是卻都轉成小寫再運行sql。這就導致如下的sql,
select * from Question
變成
select * from question
再運行,然後PostgreSQL去找question表,發現沒有(因為建的是Question表...),報錯:
ERROR: relation "question" does not existLINE 1: select * from Question
解決辦法:表名,列名均加上"", 如
select * from "Question"
(3) 因為沒有訪問server上目錄的許可權,導致通過pgAdmin沒辦法備份/還原
解決辦法:
1. 建立各個表
2. 匯出表資料到本地
3. 匯入資料到資料庫表
COPY "Question"("QuestionID","QuestionName","QuestionType","QuestionItem") FROM ‘C:\Users\~\Question.csv‘ DELIMITER ‘,‘ CSV HEADER;
注意外鍵和資料匯入順序。
2. Spring Data JPA:
Spring Boot + Spring Data JPA + PostgreSQL