sql-server - 데이터 - mysql 연속 insert




SQL Server 테이블에 대한 INSERT 문을 자동 생성하는 가장 좋은 방법은 무엇입니까? (13)

@Mike Ritacco에 의해 언급되었지만 SSMS 2008 R2에 대해 업데이트 됨

  1. 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하십시오.
  2. 작업 선택> 스크립트 생성을 선택하십시오.
  3. 소개 페이지가 표시 될 수있는 설정에 따라
  4. '특정 데이터베이스 개체 선택'을 선택하십시오.
  5. 트리보기를 확장하고 관련 테이블을 확인하십시오.
  6. 다음을 클릭하십시오.
  7. 고급을 클릭하십시오.
  8. 일반 섹션에서 '스크립트 할 데이터 유형'에 적절한 옵션을 선택하십시오.
  9. 마법사 완료

그런 다음 SSMS에서 직접 모든 INSERT 문을 가져옵니다.

EDIT 2016-10-25 SQL Server 2016 / SSMS 13.0.15900.1 수정

  1. 데이터베이스 이름을 마우스 오른쪽 단추로 클릭하십시오.

  2. 작업 선택> 스크립트 생성을 선택하십시오.

  3. 소개 페이지가 표시 될 수있는 설정에 따라

  4. '특정 데이터베이스 개체 선택'을 선택하십시오.

  5. 트리보기를 확장하고 관련 테이블을 확인하십시오.

  6. 다음을 클릭하십시오.

  7. 고급을 클릭하십시오.

  8. 일반 섹션에서 '스크립트 할 데이터 유형'에 적절한 옵션을 선택하십시오.

  9. 확인을 클릭하십시오.

  10. 출력을 새 쿼리, 클립 보드 또는 파일로 이동할지 여부를 선택하십시오.

  11. 다음을 두 번 클릭하십시오.

  12. 스크립트는 위에서 선택한 설정에 따라 준비됩니다.

  13. 마침을 클릭하십시오.

우리는 새로운 응용 프로그램을 작성하고 테스트하는 동안 더미 데이터가 필요합니다. MS Access를 사용하여 해당 테이블에 Excel 파일을 덤프하여 해당 데이터를 추가했습니다.

가끔씩 관련 테이블을 "새로 고침"하고 싶습니다. 즉, 모든 테이블을 삭제하고 다시 만들고 저장된 MS Access 추가 쿼리를 실행하는 것입니다.

첫 번째 부분 (삭제 및 다시 만들기)은 쉬운 SQL 스크립트이지만 마지막 부분은 나를 싫어하게 만듭니다. 더미 데이터가 다시 생성되도록 INSERT를 한 번 설치하는 스크립트를 원합니다.

이제 테이블에 데이터가 있습니다. 해당 데이터 집합에서 INSERT 문의 큰 목록을 자동으로 생성하는 가장 좋은 방법은 무엇입니까?

필자가 생각하는 유일한 방법은 테이블을 엑셀 시트에 저장 한 다음 엑셀 공식을 작성하여 모든 행에 대해 INSERT를 작성하는 것입니다.이 방법은 확실하게 최선의 방법은 아닙니다.

2008 Management Studio를 사용하여 SQL Server 2005 데이터베이스에 연결합니다.




SSMS 2008 버전 10.0.5500.0을 사용하고 있습니다. 이 버전에서는 스크립트 생성 마법사의 일부로 고급 단추 대신 아래 화면이 있습니다. 이 경우에는 삽입 된 데이터와 구문을 만들지 않기를 원했기 때문에 두 개의 원형 속성을 변경해야했습니다.


sp_generate_inserts에 대한 첫 번째 링크는 매우 간단합니다. 여기에 아주 간단한 버전이 있습니다.

DECLARE @Fields VARCHAR(max); SET @Fields = '[QueueName], [iSort]' -- your fields, keep []
DECLARE @Table  VARCHAR(max); SET @Table  = 'Queues'               -- your table

DECLARE @SQL    VARCHAR(max)
SET @SQL = 'DECLARE @S VARCHAR(MAX)
SELECT @S = ISNULL(@S + '' UNION '', ''INSERT INTO ' + @Table + '(' + @Fields + ')'') + CHAR(13) + CHAR(10) + 
 ''SELECT '' + ' + REPLACE(REPLACE(REPLACE(@Fields, ',', ' + '', '' + '), '[', ''''''''' + CAST('),']',' AS VARCHAR(max)) + ''''''''') +' FROM ' + @Table + '
PRINT @S'

EXEC (@SQL)

내 시스템에서 나는이 결과를 얻는다.

INSERT INTO Queues([QueueName], [iSort])
SELECT 'WD: Auto Capture', '10' UNION 
SELECT 'Car/Lar', '11' UNION 
SELECT 'Scan Line', '21' UNION 
SELECT 'OCR', '22' UNION 
SELECT 'Dynamic Template', '23' UNION 
SELECT 'Fix MICR', '41' UNION 
SELECT 'Fix MICR (Supervisor)', '42' UNION 
SELECT 'Foreign MICR', '43' UNION 
...

나는 내 블로그 에 올린이 script 를 사용했다. ( SQL 서버에서 SQL 문을 삽입하는 방법 ).

지금까지 발견하지 못한 버그 일지라도 지금까지 나를 위해 일해 왔습니다.


나는 이것을하기 위해 sqlite를 사용한다. 나는 스크래치 / 테스트 데이터베이스를 생성하는데 매우 유용하다는 것을 알았다.

sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql


데이터를 사용하기 전에 데이터를 백업 한 다음 새로 고칠 때 복원하십시오.

삽입물을 생성해야하는 경우 다음을 시도하십시오. http://vyaskn.tripod.com/code.htm#inserts


삽입물을 사용하지 마십시오. BCP 사용하십시오.


이 저장 프로 시저를 사용하면 특정 테이블을 대상으로하고 where 절을 사용할 수 있습니다. here 에서 텍스트를 찾을 수 있습니다.

예를 들어 다음과 같이 할 수 있습니다.

EXEC sp_generate_inserts 'titles'

프로덕션 데이터베이스에 아직 데이터가 있습니까? 그렇다면 DTS를 통해 데이터를 새로 고치도록 설정할 수 있습니다. 우리는 매주 주말에 우리 업무를 수행하며, 매주 테스트를 위해 깨끗하고 실제적인 데이터를 얻는 것이 좋습니다.

아직 프로덕션을 가지고 있지 않다면, 원하는대로 데이터베이스를 생성해야합니다. 그런 다음 해당 데이터베이스를 복제하고 새로 작성한 데이터베이스를 테스트 환경으로 사용하십시오. 깨끗한 버전을 원하면 깨끗한 버전을 다시 복제하고 Bob의 삼촌을 복제하십시오.


확실하지, 귀하의 질문을 올바르게 이해하는 경우.

MS-Access에서 SQL Server로 이동하려는 데이터가있는 경우 DTS를 사용할 수 있습니다.
그리고 SQL 프로파일 러를 사용하여 모든 INSERT 문을 볼 수 있다고 생각합니다.


Visual Studio 사용 Visual Studio 작업을 수행 할 수 있습니다 (적어도 2013 이후 버전 이상).

VS 2013에서는 inserts 문이 기반으로하는 행 목록 을 필터링 할 수도 있습니다. 이것은 SSMS에서는 불가능한 것입니다.

다음 단계를 수행하십시오.

  • "SQL Server Object Explorer"창을 엽니 다 (메뉴 : / View / SQL Server Object Explorer).
  • 데이터베이스와 테이블 열기 / 확장
  • 테이블을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 "데이터보기"를 선택하십시오.
  • 그러면 메인 영역에 데이터가 표시됩니다.
  • 선택 단계 : 필터 아이콘 "정렬 및 필터 데이터 세트"(결과 위의 행에서 네 번째 아이콘)를 클릭하고 하나 이상의 열에 일부 필터를 적용합니다
  • "Script"또는 "File to File"아이콘 (맨 윗줄의 오른쪽에있는 아이콘은 작은 종이처럼 보입니다)을 클릭하십시오.

그러면 선택한 테이블에 대한 (조건부) 삽입 문이 활성 창이나 파일에 작성됩니다.


"필터"및 "스크립트"단추 Visual Studio 2013 :





code-generation