10만 개의 테스트 데이터 생성 방법(SQL Server)

1. 시작
ATL 시스템의 다나카입니다.
SQL을 배우기 위해 DB(데이터베이스)에 수만 장의 많은 기록을 넣고 싶은데 큰 이니셜 데이터의 자체 제작 방법을 몰라요!Excel보다 더 많은 기록을 간단하게 만들고 싶어요!
생각해 봤어요?
경험이 있는 사람은 손을 드세요.・・・(-ω-;)/"네!"
손을 들면 계속 읽어주세요(웃음)
만약 대량의 기록을 넣어서 조회를 실행하려 하지 않는다면 DB는 진정한 행위를 볼 수 없을 것이다.그래서 저는 처음에 넣을 테스트 데이터를 간단하게 만들 필요가 있다고 생각합니다. 그래서 이 글에서 그 중 하나를 소개하고 싶습니다.
※ 면책 사항(꼭 읽어주세요)
본 보도의 정보로 인해 발생한 어떠한 손실도 본사는 일체 책임을 지지 않습니다.
또한 잘못된 정보가 들어와 정보가 낡아진 경우도 있기 때문에 정확성을 보증할 수 없으니 양해해 주십시오.
2. 개요
SQL Database에 csv 데이터를 가져오고 SQL 질의를 실행하여 레코드를 추가합니다.

3. 결과
10만 건의 테스트 데이터를 생성할 수 있다.방법은 아래 장과 절에 기재되어 있다.
또한 피드 테이블은 위조 개인 정보 생성 서비스에서 생성된다.  
6.표 2의 제작를 실행하면 피드 테이블에서 10만 개의 기록을 생성합니다.
이번에는 특히 SQL Server에 대한 맞춤법으로 다른 DB의 SQL도 같은 방법으로 구현할 수 있다.

4. 데이터 준비
웹 서비스를 통해 다양한 데이터를 생성할 수 있습니다.매우 편리합니다.
   위조 개인 정보 생성 서비스
5. 표 만들기 1(종류표)
SSMS(SQL Server Management Studio)에서 위에서 설명한 csv를 가져옵니다.자세한 액세스 방법은 다음과 같습니다.
여기에 상세한 설명이 있으니 참고하세요.
[SQL Server] Management Studio를 통해 대량의 데이터를 간단하게 삽입하는 방법
포털: DB 마우스 오른쪽 버튼 클릭 → 작업 → 데이터 내보내기 클릭

마법사를 계속 사용하면 이 csv를 얻기 위해 마법사에 표를 만들 수 있습니다.
이곳에서 만든 탁자를 표로 삼다.
※ 마법사에서는 열을 삭제할 수 있지만, 데이터 출력은 열 방향에서 벗어날 수 있으니 주의하십시오.
6.표 2의 제작
표1은 10줄 정도밖에 없기 때문에 제가 만든SQL 쿼리 테스트 데이터처럼 표1에서 무작위로 1줄을 꺼낸 다음 WHILE 문구로 10만 번을 반복해서 표2에 넣는 처리를 합니다.(횟수는 index 수정을 통해 변경할 수 있음)
이렇게 되면 테이블 2의 컨텐트에서 출력3. 결과이 됩니다.

7. SSMS 데이터에서 내보내기
필요에 따라 DB의 테이블 2에서 데이터를 내보낼 수 있습니다.
여기에 상세한 설명이 있으니 참고하세요.
[SQL Server] SSMS를 통한 CSV 내보내기
8.마지막
끝까지 읽어주셔서 감사합니다!
다음에 이 글에서 작성한 테스트 데이터를 json으로 변환하여 간단한 도구로 Azure Cosms DB에 대한 데이터 요약을 진행합니다!
잡담을 하자면, 우리 회사에도 페이스북이 있다!
        
9. 참고자료
  • 위조 개인 정보 생성 서비스
  • [SQL Server] Management Studio를 통해 대량의 데이터를 간단하게 삽입하는 방법
  • [SQL Server] SSMS를 통한 CSV 내보내기
  • 부록
    예: 무작위 테스트 데이터 생성.sql
    use fsTestDB2
    - テーブル名2の中身を全部捨てる
    TRUNCATE table Table_2
    -- キャッシュを消す
    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE
    --変数宣言
    DECLARE @index INTEGER
    DECLARE @seedsize INTEGER
    DECLARE @STARTDATETIME datetime2 = SYSDATETIME()
    --ループ用変数を初期化
    SET @index = 1
    select @seedsize = count([名前]) from Table_1
    --エラーが起きたら以下のトランザクションをロールバック
    SET XACT_ABORT ON;
    BEGIN TRANSACTION;
    
    WHILE @index <= 100000
    BEGIN
    --テーブル1をランダムなIDで降順にならべたときの先頭レコードだけ、テーブル2に入れる
        insert into dbo.Table_2
          select top(1) @index
          ,[名前]
          ,[地域名]
          ,[投票者]
          ,[登録年月日]
          ,[更新年月日]
          ,[削除フラグ] from Table_1 as s order by ABS(CAST((BINARY_CHECKSUM ([名前], NEWID())) as int))% @seedsize desc
        --ループ用変数をインクリメント
        SET @index = @index + 1
    END
    COMMIT TRANSACTION;
    

    좋은 웹페이지 즐겨찾기