에 삽입 나는 두 개의 테이블이 있습니다 t1
및 t2
- t2
은 stuff
(60.000 항목)라는 이름의 단 1 열이 있습니다.
- t1
에는 stuff
(비어 있음)을 포함하여 15 개의 열이 있습니다. t1
에는 약 650.000 개의 항목이 있습니다.MySQL의 단일 컬럼 테이블> 다른 테이블
t2.stuff
의 데이터를 t1.stuff
에 가져 오려면 어떻게해야합니까? (단지 t1.stuff
의 빈 필드에 t2.stuff
의 데이터를 채우고 ids 또는 기타와 일치하는 것은 신경 쓰지 않아도됩니다.
가장 좋은 경우는 약 11 번이 쿼리를 실행하면, t1.stuff
의 빈 필드가 남아 있지 않으므로 t1.stuff
의 모든 필드가 채워집니다.
t1
:
|__a___|_b_|_c_|stuff|...|
|___308|foo|bar|_____|baz|
|___312|foo|bar|_____|baz|
...
|655578|foo|bar|_____|baz|
t2
:
|___stuff___|
여기
|some_info_1|
|some_info_2|
...
|some_info_n|
어쩌면 ...
UPDATE 여기
필요한 여러 단계 거기 솔루션 내가되어 있습니다 웬 누군가와 비슷한 문제가있는 경우를 대비하여 - 모든 크레딧은 사용자에게 누들 글로우에게 올바른 방향으로 나를 가리키게합니다. 그래서 여기에 우리가 간다 :
이 autoincrementing 번호로 채워 질문에 테이블에 새 열을 추가
ALTER TABLE t1 ADD COLUMN new_column INTEGER UNIQUE AUTO_INCREMENT;
(이 코드에 오류를 방지하기 위해, 내 기본 키에
t2에 대해 동일한 작업을 수행 했습니까?
CREATE TABLE t2 (id INTEGER PRIMARY KEY AUTO_INCREMENT,t2_data_column VARCHAR(255));
< - 여러분의 필요에
을 수를 조정하여 데이터를 가져옵니다 : 이미 두 번째 테이블이없는 경우, 당신은 이런 식으로 뭔가를 할 수
LOAD DATA LOCAL INFILE 'path_on_your_server/data_file.csv'
INTO TABLE t2
LINES TERMINATED BY '\r\n'
< - 조정 당신의 LINEBREAK에 당신이 할 수있는INNER JOIN
t1
을, 당신은에 맞게 뭔가를 이제
(t2_data_column)
필요 다음을 수행하여:
t1
UPDATE t1 AS s
JOIN t2 AS t ON t.id=s.new_column
SET s.stuff=t.t2_data_column;
<에t2
에서 데이터를 추가 -stuff
I가 데이터를 가져 싶어t1
에서 열였다.
DROP TABLE t2;
ALTER TABLE t1 DROP COLUMN new_column;
가 다시 기본 키에 자동 증가를 사용하도록 설정하고 이전에 하나를 사용하는 경우, 새 행에 필요한 숫자로 설정 엉망- 깔끔한.
alter table t1 auto_increment = 1
및 임시 사용하지 autoincrementing 설정)
이제 끝났습니다.
추가 참고 사항 : 나는 데이터를 오프라인으로 조정하고이 방법으로 필요한 650.000 개 항목을 가져 오기로 결정했습니다. 초기 질문에 넣은 60.000만으로 수행하는 것이 아닙니다. 그러나 원하는 수의 데이터로 원하는 수의 데이터로 처리 할 수 있습니다.
Puh, 정말 답을 이해하려고 노력했지만 아주 잘 따를 수는 없습니다. 나는 지금까지 데이터베이스 조작을 위해 phpmyadmin을 사용했다 ...). t1에서 행의 고유 키가 무슨 뜻입니까? 각 행의 기본 키를 의미하는 경우 자동 증가 숫자는 'a'열에 넣습니다. (밑줄은 그래픽에서 "아무것도"(공백)을 나타냄). 이 값들은 때때로'1','2' 등으로 시작하는 것이 아닙니다. 때때로 많은 행을 제거해야하기 때문입니다. 't2'는 이와 같은 것을 가지고 있지 않습니다. 't2' 데이터는 csv 파일에서 가져온 순수 텍스트를 포함합니다. –
예, 기본 키는 고유 키이므로 a__ 대신 위의 명령문에서 a를 사용하여 각 행에 대해 보류를 얻을 수 있습니다. – sqlab
커서를 사용하여 순수한 mysql을 사용하여 작업을 수행 할 수도 있지만 이게 더 어렵게 될 것이라고 생각합니다 – sqlab