2012-06-18 3 views
1

사실은 비어있는 일부 세포를 포함하지만, 쿼리 등MySQL의 쿼리는 엄청나게 큰 파일을 반환

select name, REPLACE(format, ' – ', '/') as format, CAST(price AS UNSIGNED INTEGER) as price, CONCAT('http://example.com/',url_key) as url, level_id_value, delivery, sku from t1 where delivery <> 'slut' INTO OUTFILE 'test.txt' FIELDS TERMINATED BY '\t'; 

완벽하게 일을 그것의 이름을 가지고 있어야하는 두 개의 테이블에서 약간의 열을 선택하는 쿼리를 lib 폴더에 2.5 MB 크기의 텍스트 파일을 생성하지만 다른 코드는 다음과 같이 다른 테이블의 한 열을 몇 개의 빈 열과 함께 추가해야하는 다른 코드와 비슷하게 작동하지만 파일 크기는 약 11GB입니다 (

).
sELECT t1.sku, t.name, ' ' as Size, format, ' ' as subcategory, CAST(t1.price AS UNSIGNED INTEGER) as price, ' ' as dummy, CONCAT('http://example.com/',t1.url_key) as url, CONCAT('Från ',t1.level_id_value) as shipping_fee, t2.is_in_stock as stock, ' ' as text1, ' ' as Description from t2,t1 where t1.delivery <> 'slut' INTO OUTFILE 'test.txt' FIELDS TERMINATED BY '\t'; 

이 문제를 디버그하는 데 도움이됩니다. mysql에 대해 많은 것을 알고 있으므로 자세한 설명을 매우 환영합니다. 두 테이블의 첫 번째 작업 코드와 비슷한 코드를 만들 수있는 방법이 있습니까? 난 그냥 t2 테이블에서 하나의 열, 즉 is_in_stock이 필요합니다.

답변

1

그래서 첫 번째 쿼리는 WHERE 절을 사용하는 SELECT INTO 절을 사용하므로 적은 수의 결과를 반환합니다.

두번째는 암시 내부 조인 도시되어 있지만, 고유의 행에 기초하여 값을 복귀이 arent, 그냥 관계없이 두 테이블에 일치하는지 여부의 양쪽 테이블 모두에 끌어

SELECT t1.sku, 
t.name, 
' ' as Size, 
format, 
' ' as subcategory, CAST(t1.price AS UNSIGNED INTEGER) as price, 
' ' as dummy, CONCAT('http://example.com/',t1.url_key) as url, 
CONCAT('Från ',t1.level_id_value) as shipping_fee, 
t2.is_in_stock as stock, 
' ' as text1, 
' ' as Description **`from t2,t1`** 
where t1.delivery <> 'slut' INTO OUTFILE 'test.txt' FIELDS TERMINATED BY '\t'; 

이것은 하나의 방법이지만, 각 레코드를 분리해야하기 때문에 각각의 행을 고유하게 만들고 inner join과 같은 t1과 t2 사이의 내부 조인을 수행합니다. ON t1.name = t2.name t1.id = t2.id이지만 다음과 같이 표시되어야합니다.

SELECT t1.sku, 
t1.name, 
t1.format, 
CAST(t1.price AS UNSIGNED INTEGER) as price, 
CONCAT('http://example.com/',t1.url_key) as url, 
CONCAT('Från ',t1.level_id_value) as shipping_fee, 
'' as dummy, 
'' as size, 
'' as subcat, 
'' as text1, 
'' as Description, 
t2.is_in_stock as stock, 
from t1 
INNER JOIN t2 WHERE t1.delivery <> 'slut' 
INTO OUTFILE 'test.txt' FIELDS TERMINATED BY 't\'; 

희망이 있습니다!

+0

감사합니다. 그것은 주식 후, 혼수 상태없이 완벽하게 작동합니다, 매우 mcuch 감사합니다. 나는 그것으로부터 얼마나 큰 파일을 얻었는지 테스트해볼 것입니다. 고마워. – tough

+0

당신은 = – Hituptony

+0

입니다. 이제 test.txt의 크기를 다시 9.6G로 확인했을 때, du -sh [file]을 사용합니다. 정확히 어떻게 수정 해야할지 모르겠다 – tough