programing

MySQL - SELECT * OUTFILE LOCAL?

kingscode 2022. 10. 2. 22:00
반응형

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로컬 버전이 없는 이유는 잘 모르겠습니다.또, 접속을 재검토하는 것도 귀찮을지도 모릅니다.같은 기능을 사용할 수 있습니다.mysqldumpSQL을 서버로 전송하지 않습니다.

저는 이 문제를 정기적으로 찾고 있기 때문에(이전에는 뭔가 놓쳤으면 좋겠다고 생각하고) 마침내 시간을 들여 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

반응형