고정 폭 파일에 포함 된 판매를 가져와 일부 테이블에 저장하는 C# WinForms 응용 프로그램이 있습니다. 테이블은 구조가 동일하지만 데이터베이스 내의 다른 스키마에 있습니다.PostgreSQL 데이터베이스에 데이터를 저장하기위한 올바른 스키마를 자동으로 찾는 방법은 무엇입니까?
현재 응용 프로그램에서 각 판매 데이터를 저장하는 두 개의 쿼리를 실행합니다. 하나는 데이터를 저장할 올바른 스키마를 가져오고 다른 하나는 실제로 테이블에 삽입하는 것입니다.
사례를 더 잘 설명하기 위해 Sales 테이블이있는 주 스키마와 여러 스키마 (자국의 각 지역마다 하나씩)에 클라이언트 테이블이 있다고 가정 해 보겠습니다. 각 판매의 고객 ID를 사용하여 올바른 판매점 스키마를 찾습니다.
이 과정을 최적화해야합니다. 빨리 처리해야합니다. 필자는이 응용 프로그램의 프로파일을 작성했으며이 두 가지 쿼리는 가장 시간이 많이 걸리는 단계입니다. 내 응용 프로그램 내에서 단일 명령을 실행하고 데이터베이스에 올바른 스키마를 찾는 작업을 떠나는 것이 도움이 될 것 같습니다.
INSERT INTO
(SELECT clients.schema_name FROM main.clients WHERE client_id = @client_id).sales
(client_id, qty, value)
VALUES
(@client_id, @qty, @value)
명확하게하지 않습니다 작품 :
나는 이런 식으로 뭔가를 달성하고 싶다. SQL에 대해서 잘 모르겠다. 기초는 있지만 단일 명령으로는 불가능하다고 나는 생각한다. 저장 프로 시저가 필요하다.
데이터베이스 구조를 변경하는 것과 관련하여 오랫동안 이에 대한 지침이나 더 나은 솔루션을 듣고 싶습니다.
그래, 내 데이터베이스에 결함이 있다는 것을 알고있다. 이것은 그 중 하나 일 뿐이다. 이미 많은 모듈이 있기 때문에 문제를 해결할 여유가 없습니다. 나는이 프로젝트에 참여하여 개발의 후반기에 접어 들었고, 데이터베이스는 이미 내가 아는 것보다 데이터베이스 설계가 훨씬 더 나쁜 사람에 의해 이미 정의되었다. –
나는 판매를 가져 오기 전에 각 고유 한 client_id에 대해 하나의 쿼리를 실행하고 저장하고 사전에 해당 스키마를 저장한다고 말한 것을 끝냈습니다. 각 파일을 약 50 %까지 가져 오는 시간을 줄이기 위해 관리되었습니다. 당신의 대답을 받아 들일 것입니다. 감사. –