MySQL - SELECT * OUTFILE LOCAL?
MySQL 대 i!는 현재 있었습니다.저는 현재 대규모 서버 이행에 관여하고 있으며, 이전에는 소규모 데이터베이스가 클라이언트와 같은 서버에서 호스트되어 있었습니다.
요.SELECT * INTO OUTFILE .... LOAD DATA INFILE ....
이제를 다른 또, 이 서버는SELECT * INTO OUTFILE ....
보안상의 이유로 더 이상 작동하지 않는 것은 이해할 수긍할 수 있습니다. 재미있게도LOAD DATA INFILE ....
로 할 수 LOAD DATA LOCAL INFILE ....
bam은 가 있다
나는 MySQL에 대해 불평하거나 혐오감을 표현하지 않는다.그 대신 2행의 추가 코드와 시스템콜이 .sql 스크립트를 형성합니다. 건 왜 그랬냐는 야?LOAD DATA LOCAL INFILE
만, 「」, 「」의 것은 왜 존재하지 것입니까.SELECT INTO OUTFILE LOCAL
나는 숙제를 했지만 위의 질문에 대한 직접적인 답을 찾을 수 없었다.MySQL에서도 기능 요청을 찾을 수 없었습니다.누군가 그걸 밝혀준다면 정말 멋질 거야!
MariaDB는 이 문제를 처리할 수 있습니까?
: ★★★★★★★★★★★★★★★★★~The SELECT ... INTO OUTFILE
스테이트먼트는 주로 테이블을 서버 머신의 텍스트파일에 빠르게 덤프하는 것을 목적으로 하고 있습니다.는, 「」를 사용할 수 .SELECT ... INTO OUTFILE
때는 대신 해야 합니다.mysql -e "SELECT ..." > file_name
하기 위해서입니다." 라고 합니다.
http://dev.mysql.com/doc/refman/5.0/en/select.html
예:
mysql -h my.db.com -u usrname--password=pass db_name -e 'SELECT foo FROM bar' > /tmp/myfile.txt
mysql 콘솔에서 -s(--silent) 옵션을 전달하면 원하는 것을 얻을 수 있습니다.
특수 문자가 빠져나가지 않도록 -r(--raw) 옵션도 전달하는 것이 좋습니다.이 기능을 사용하여 원하는 대로 쿼리를 파이핑할 수 있습니다.
mysql - u username -h hostname -p -s -r - e "select concat "this", ""works""
편집: 또한 출력에서 열 이름을 삭제하려면 다른 -s(mysql -ss -r 등)를 추가합니다.
「 」에게 LOAD DATA INFILE
는 서버가 실행되고 있는 머신상의 파일시스템용이지 접속원 머신이 아닙니다. LOAD DATA LOCAL INFILE
클라이언트 머신용이지만 서버가 올바른 설정으로 기동되어 있어야 합니다.그렇지 않으면 허용되지 않습니다.자세한 것은, http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html 를 참조해 주세요.
에 대해서는SELECT INTO OUTFILE
로컬 버전이 없는 이유는 잘 모르겠습니다.또, 접속을 재검토하는 것도 귀찮을지도 모릅니다.같은 기능을 사용할 수 있습니다.mysqldump
SQL을 서버로 전송하지 않습니다.
저는 이 문제를 정기적으로 찾고 있기 때문에(이전에는 뭔가 놓쳤으면 좋겠다고 생각하고) 마침내 시간을 들여 MySQL 쿼리를 CSV 파일로 내보내기로 했습니다.예를 들어 https://stackoverflow.com/a/28168869과 같은 PHP에 기반한 몇 가지 옵션과 함께요.CSV 매개 변수(딜리미터, NULL 값 처리)를 미세 조정할 수 있어야 하고 파일이 실제로 유효한 CSV여야 하기 때문에 이 작업은 사용 사례에 매우 중요했습니다.CONCAT
는 값에 줄 바꿈 또는 CSV 딜리미터가 포함되어 있는 경우 유효한 CSV 파일이 생성되지 않기 때문에 충분하지 않습니다.
주의: 서버에 PHP를 설치해야 합니다! (확인 가능)php -v
)
" "설치"mysql2csv
wget https://gist.githubusercontent.com/paslandau/37bf787eab1b84fc7ae679d1823cf401/raw/29a48bb0a43f6750858e1ddec054d3552f3cbc45/mysql2csv -O mysql2csv -q && (sha256sum mysql2csv | cmp <(echo "b109535b29733bd596ecc8608e008732e617e97906f119c66dd7cf6ab2865a65 mysql2csv") || (echo "ERROR comparing hash, Found:" ;sha256sum mysql2csv) ) && chmod +x mysql2csv
(GIST 내용 확인, 체크섬 확인 및 실행 가능)
사용 예
./mysql2csv --file="/tmp/result.csv" --query='SELECT 1 as foo, 2 as bar;' --user="username" --password="password"
는 파일 「파일」을 합니다./tmp/result.csv
foo,bar
1,2
참고용 도움말
./mysql2csv --help
Helper command to export data for an arbitrary mysql query into a CSV file.
Especially helpful if the use of "SELECT ... INTO OUTFILE" is not an option, e.g.
because the mysql server is running on a remote host.
Usage example:
./mysql2csv --file="/tmp/result.csv" --query='SELECT 1 as foo, 2 as bar;' --user="username" --password="password"
cat /tmp/result.csv
Options:
-q,--query=name [required]
The query string to extract data from mysql.
-h,--host=name
(Default: 127.0.0.1) The hostname of the mysql server.
-D,--database=name
The default database.
-P,--port=name
(Default: 3306) The port of the mysql server.
-u,--user=name
The username to connect to the mysql server.
-p,--password=name
The password to connect to the mysql server.
-F,--file=name
(Default: php://stdout) The filename to export the query result to ('php://stdout' prints to console).
-L,--delimiter=name
(Default: ,) The CSV delimiter.
-C,--enclosure=name
(Default: ") The CSV enclosure (that is used to enclose values that contain special characters).
-E,--escape=name
(Default: \) The CSV escape character.
-N,--null=name
(Default: \N) The value that is used to replace NULL values in the CSV file.
-H,--header=name
(Default: 1) If '0', the resulting CSV file does not contain headers.
--help
Prints the help for this command.
Waverly360이 제안하는 바와 같이 -e 옵션과 함께 mysql CLI를 사용하는 것은 좋은 방법이지만, 메모리가 부족하여 큰 결과로 인해 사망할 수 있습니다(배후에 있는 이유를 찾을 수 없습니다).모든 레코드가 필요한 경우 mysqldump + mysqldump 2csv:
wget https://raw.githubusercontent.com/jamesmishra/mysqldump-to-csv/master/mysqldump_to_csv.py
mysqldump -u username -p --host=hostname database table | python mysqldump_to_csv.py > table.csv
순서: SELECT * OUTFILE로
MySQL이 서버의 OUTFILE 디렉토리에 파일을 쓸 수 있는 권한을 가지고 있는지 확인합니다.
「」로 ./var/lib/mysql-files/filename.csv
(MySQL 8).「를 타이핑 것으로써, 어느 파일 디렉토리가 유저인지 합니다.SHOW VARIABLES LIKE "secure_file_priv";
명령어.in mysql client 명 、 in in in in in in in in 。
자세한 내용은 여기를 참조하십시오. (...) vhu 사용자가 2015년에 MySQL에서 응답한 --secure-file-priv
언급URL : https://stackoverflow.com/questions/2867607/mysql-select-into-outfile-local
'programing' 카테고리의 다른 글
python matplotlib에서 축 문자 회전 (0) | 2022.10.08 |
---|---|
빈 Panda DataFrame을 만들고 이를 채우는 방법? (0) | 2022.10.02 |
이름(문자열)을 사용하여 모듈의 함수를 호출한다. (0) | 2022.10.02 |
"= null"과 "IS null"의 차이점은 무엇입니까? (0) | 2022.10.02 |
panda: 연산자 체인으로 DataFrame 행을 필터링합니다. (0) | 2022.10.02 |