찾다

 >  Q&A  >  본문

CSV 형식이 포함된 varchar 열을 다른 테이블로 이동

15년 전에 제가 만든 데이터베이스는 잘못 설계되었습니다. 쉼표로 구분된 문자열 '5,8,13'을 포함하는 varchar 열이 있습니다. 문자열에는 공백과 후행 쉼표가 포함되지 않지만 값의 개수는 가변적입니다. 내가 하고 싶은 일은 새 테이블을 만들고 행의 ID와 쌍을 이루는 이 값을 새 테이블로 옮기는 것입니다. 위 값이 ID 7의 행에서 나온다고 가정하면 결과는 3개의 행이 됩니다.

으아아아

기존 데이터 세트를 보면 해당 열에는 1부터 6까지의 값이 있습니다. 문자열 분할 기능을 사용하는 방법을 보여주는 스레드를 찾았습니다: 값을 한 필드에서 두 필드로 나누기

하지만 솔직히 이것을 단일 삽입 작업으로 변환하는 방법을 모르겠습니다. 이것이 간단한 작업이 아니라면 삽입 문이 많더라도 그냥 PHP 스크립트를 작성하겠습니다.

더 자세히 설명하려면 다음 두 표를 참고하세요.

으아아아

Table_A는 기존 데이터입니다. 여기서 플랫폼 열의 데이터는 쉼표로 구분된 숫자 "3,45" 또는 "56,4"입니다. 이 숫자는 다른 테이블의 인덱스를 가리킵니다. 예, 나는 그것이 나쁜 디자인이라는 것을 압니다. 운 좋게도 그 이후로 더 나은 방법을 배웠습니다. Table_A의 플랫폼 문자열에서 숫자를 구문 분석하여 Table_A 행의 ID와 함께 Table_B에 삽입하고 싶습니다.

P粉478188786P粉478188786498일 전548

모든 응답(1)나는 대답할 것이다

  • P粉956441054

    P粉9564410542023-09-11 14:04:03

    이 기능을 구현하기 위한 간단한 쿼리는 다음과 같습니다. CSV에서 6개의 값만 분할합니다. 연속된 값이 더 있으면 변경해야 합니다 UNION ALL

    결과는 단일 테이블에 저장됩니다.

    으아악

    회신하다
    0
  • 취소회신하다