awk를 사용하여 stdout에 csv를 생성 중입니다. mysql에서 내용을 파일로 가져 오지 않고 직접 가져올 수있는 방법이 있습니까?MySQL을 stdin에서 가져 오기
답변
예, 파이프 만 사용하십시오.
$ your_command | mysql -u 사용자 -p
죄송합니다.이 답변으로는 충분하지 않습니다. csv를 직접 mysql로 파이프 할 수 없다. 결과가 유효한 SQL이되게하려면 추가 작업이 필요합니다.
또는 데이터베이스에 CSV 파일로드를 지원하는 mysqld native load data infile
구문을 사용하는 것이 좋습니다.
@xdazz는 나보다 빠르지 만 파일에 결과를 넣는 것이 좋습니다. 왜? 그런 식으로 뭔가 잘못되었을 경우 문제를 확인하고 추적 할 수 있습니다. 간헐적 인 문제에 직면하면 항상 도움이되지 않습니다. 물론, 디스크 공간을 보존하기 위해 가져 오기가 완료된 후에는 너무 많이 소비하지 않도록 압축합니다.
stdin에서 CSV를 직접 가져올 수있는 것 같지 않습니다. 당신은 MySQL은 확장자없이 테이블의 이름으로 그 이름을 사용하도록 파일에 저장해야합니다, 당신은 같이 mysqlimport가 사용할 수 있습니다
mysqlimport -uUSER -pPASS DB FILE
여기서 우리는 적절한 응답에 가장 가까운 것을 가지고 있는데, 0의 upvotes가있다. –
MySQL은 확장을 통해 점점 데이터를 지원 다음과 같이 삽입 :
insert into table (col1, col2, col3) values
(a,b,c),
(d,e,f),
(g,h,i);
그래서 당신이 왼쪽에 괄호와 오른쪽의 괄호와 쉼표를 포함하도록 CSV를 수정하고 insert into table...
로 앞에 추가하고 세미콜론을 추가 할 수 있습니다, 당신이 할 수있는 파이프 직접적 MySQL 커맨드 라인에.
또한 TSV (탭 - 구분하지 쉼표로 구분 된) 이런 load data infile
에 파이프 네임드 파이프 유닉스 구조체를 사용할 수있다 : 의사가
mkfifo /tmp/mysqltsv
cat file.csv | sed -e 's/,/\t/g' > /tmp/mysqltsv
mysql -e "load data infile '/tmp/mysqltsv' into table tblname"
된다. 하나의 프로세스에서 cat을 실행하고 다른 프로세스에서 mysql 명령을 실행해야한다. 가장 쉬운 두 가지 터미널을 사용하는 것입니다. 더 고급 배경은 cat|sed
입니다.
@xdazz의 답변에 따르면 LOAD DATA LOCAL INFILE
을 사용하십시오. 나는 그것이 무지 또는 게으름으로 다운 포워드되었다고 생각한다. MySQL 매뉴얼을 열람하면 완벽하게 실행 가능한 대답이 될 것입니다. 대부분의 사용자와 가장 관련이있을 것입니다 2016 년과 MariaDB에 대한
, 당신은이 작업을 수행 :에 맞게 필요에 따라
bash awk '{ /* My script that spits out a CSV */ }' | mysql --local-infile=1 -u user -ppassword mydatabase -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE mytable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';"
분명히
이 LOAD DATA INFILE
에 옵션을 설명서를 읽고 변경 귀찮게합니까 귀하의 구체적인 사건.
- 1. mysql을 가져 오기 가능한 중복
- 2. GROUP BY의 SUM을 MySQL을 사용하여 JOIN으로 가져 오기
- 3. php/mysql을 사용하여 예약 된 날짜 가져 오기
- 4. mySql을 사용하여 남은 일, 시간 및 분 가져 오기
- 5. MySQL을 사용하지 않고 현재 시간을 가장 가까운 분으로 가져 오기
- 6. PHP/MySQL을 사용하여 데이터베이스에서 특정 정보 가져 오기
- 7. PHP mysql 가져 오기 명령문 가져 오기
- 8. 가져 오기 배열 가져 오기
- 9. 데이터베이스 가져 오기 오류
- 10. 명령은 mysql을
- 11. stdin에서 sscanf를 사용하는 방법이 있습니까?
- 12. Stdin에서 문자열 읽기
- 13. Ant가 stdin에서 입력을 무시합니다.
- 14. Python PIL을 STDIN에서 읽음
- 15. stdin에서 tar를 빌드하려면 어떻게해야합니까?
- 16. stdin에서 읽기를 중지하십시오.
- 17. Haskell Reading stdin에서 파일
- 18. stdin에서 배우 메시지를받는 방법?
- 19. stdin에서 암호 읽기
- 20. stdin에서 쉘로의 임의 입력
- 21. stdin에서 C 배열의 숫자를 얻으려고
- 22. PHP에서 최대 날짜 가져 오기
- 23. du를 사용하여 stdin에서 경로를 가져 와서 전체 크기를 계산하는 방법?
- 24. 이스케이프 문자열을 사용하여 stdin에서 문자열을 가져 오는 방법은 무엇입니까?
- 25. 오프셋 가져 오기 모든 행 가져 오기
- 26. 레지스트리 가져 오기 결과 가져 오기
- 27. 플러그인 가져 오기 UTI 유형 가져 오기
- 28. Backbone.js : 속성 가져 오기 및 가져 오기
- 29. 모나드 가져 오기 모나드 가져 오기
- 30. PDO 데이터베이스에서 데이터 가져 오기
왜이 답변이 주어 졌습니까? 작동하지 않습니다. 왜 그것이 upvoted되고 있습니까? 작동하지 않습니다. 시도 해봐. 구문 오류가 발생합니다. 이것은 "your_command"의 출력이 유효한 SQL 인 경우에만 작동합니다. CSV가 가장 확실한 것은 아닙니다. –
@xdazz 나는이 질문을 제대로 읽지 않아서 정직한 실수를하지 않는 한,이 같은 대답을 게시 한 사람이 101k의 명성을 쌓을 수 있었다는 사실에 놀랐다. 이 답변을 편집 할 때가 되었습니까? – toon81