아마존 RDS에서 '파일에 데이터를 로드'하는 방법?
이것이 서버 장애에 더 적합한 질문인지 확실하지 않지만 최근에 아마존 RDS를 엉망으로 만들고 웹 호스트 mysql 사용자에게 '파일' 권한을 얻는 데 어려움을 겪고 있었습니다.
간단하다고 생각합니다.
grant file on *.* to 'webuser@'%';
작동하지만 작동하지 않으며 '루트' 사용자와도 할 수 없는 것 같습니다.왜 그러고 있어?로드 데이터를 사용하는 이유는 수천 개의 삽입을 한 번에 수행하는 데 매우 빠르기 때문입니다.
이 문제를 해결하는 방법을 아는 사람이 있습니까? 아니면 다른 방법을 찾아야 합니까?
이 페이지인 http://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/index.html?Concepts.DBInstance.html 은 제가 이 문제를 해결할 다른 방법을 찾아야 한다고 제안하는 것 같습니다.
도와줘요?
업데이트 데이터베이스를 가져오려는 것이 아니라 파일 로드 옵션을 사용하여 한 번에 수십만 행을 삽입하고자 합니다.
이것을 파헤친 후에 우리는 이것을 가지고 있습니다.
mysql> grant file on *.* to 'devuser'@'%';
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql> select User, File_priv, Grant_priv, Super_priv from mysql.user;
+----------+-----------+------------+------------+
| User | File_priv | Grant_priv | Super_priv |
+----------+-----------+------------+------------+
| rdsadmin | Y | Y | Y |
| root | N | Y | N |
| devuser | N | N | N |
+----------+-----------+------------+------------+
를 해야 합니다.LOAD DATA LOCAL INFILE
파일이 MySQL 서버에 있는 것이 아니라 명령을 실행 중인 시스템에 있기 때문입니다.
아래 설명에 따라 플래그도 포함해야 합니다.
--local-infile=1
무슨 가치가 있건 간에...LOCAL고 LOAD DATA INFILE다를 할 수 .mysqlimport
이 문제를 해결하기 위해서 입니다.
데이터 로컬 파일 로드...
파일 권한을 부여하지 않고도 작동합니다.
또한 윈도우의 MySQL Workbench를 사용하여 로컬 머신에서 AWS RDS 인스턴스에 .csv 데이터를 업로드하려고 시도하면서 이 문제로 어려움을 겪었습니다.
한 것은 이었습니다를 이었습니다.OPT_LOCAL_INFILE=1
> >n :결 >급 >타 참고로 CAPS가 필요했습니다.
저는 AWS 개발자 포럼에서 피터매그의 이 답변을 찾았습니다.
자세한 정보:
SHOW VARIABLES LIKE 'local_infile';
dON
질문은 다음과 같습니다.
LOAD DATA LOCAL INFILE 'filepath/file.csv'
INTO TABLE `table_name`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
위에서 참조한 답변 소스에서 복사하는 중:
이것은 MYSQL Workbench V8.X의 버그인 것 같습니다.이 스레드에서 앞에 나온 구성 외에 Workbench에서 MYSQL Connection을 다음과 같이 변경해야 합니다.
- 모든 연결을 표시하는 MYSQL의 시작 페이지로 이동합니다.
- 서버 연결 관리(작은 스패너 아이콘)를 선택합니다.
- 연결을 선택합니다.
- 고급 탭 선택
- 기타 상자에서 OPT_LOCAL_INFILE=1을 추가합니다.
이제 MYSQL RDS에서 LOAD DATA LOCAL INFILE 쿼리를 사용할 수 있습니다. File_priv 권한이 필요하지 않은 것 같습니다.*
RDS로 최고 수준의 MySQL 권한을 가지고 있지 않기 때문에 아직은 할 수 없습니다. 우리는 약간의 테스트만 했지만 데이터베이스를 가져오는 가장 쉬운 방법은 소스 상자에서 파이프링하는 것입니다.
mysqldump MYDB | mysql -h rds-amazon-blah.com --user=youruser --pass=thepass
대량 데이터를 Amazon MySQL RDS로 가져오는 것은 두 가지 방법으로 가능합니다.아래 중 편하신 분을 선택하시면 됩니다.
Import 유틸리티를 사용합니다.
mysqlimport --local --compress -u <user-name> -p<password> -h <host-address> <database-name> --fields-terminated-by=',' TEST_TABLE.csv --Make sure, here the utility will be inserting the data into TEST_TABLE only.
mysql 명령어로 piping하여 대량 삽입 SQL을 보냅니다.
mysql -u <user-name> -p<password> -h <host-address> <database-name> < TEST_TABLE_INSERT.SQL --Here file TEST_TABLE_INSERT.SQL will have bulk import sql statement like below --insert into TEST_TABLE values('1','test1','2017-09-08'),('2','test2','2017-09-08'),('3','test3','2017-09-08'),('3','test3','2017-09-08');
저도 비슷한 문제에 부딪혔습니다.데이터베이스를 가져오려고 했지만 조건은 똑같아야 합니다. 일부 테이블의 크기와 얼룩이 많은 연결, 그리고 간단한 이력서 기능을 원하기 때문에 로드 데이터를 사용해야 했습니다.
로컬 옵션을 지정하지 않으면 오류가 발생할 수 있다는 Chris finne의 의견에 동의합니다.여러 번의 적합과 시작 끝에 Matkit의 mk-parallel-restore 툴이 필요한 것과 뛰어난 추가 기능을 제공한다는 것을 알게 되었습니다.그것은 당신의 사용 사례에 아주 잘 어울릴 것입니다.
언급URL : https://stackoverflow.com/questions/1641160/how-to-load-data-infile-on-amazon-rds
'programing' 카테고리의 다른 글
jQuery.parseJSON vs JSON.parse (0) | 2023.10.04 |
---|---|
ASP에서 사용할 수 있는 프레임워크는 무엇입니까?NET Core(ASP).NET 5) 애플리케이션? (0) | 2023.10.04 |
XML 스키마와 DTD의 차이점은 무엇입니까? (0) | 2023.10.04 |
Table Plus에서 로컬 도커 데이터베이스 인스턴스에 연결 (0) | 2023.10.04 |
게시물에서 '업데이트'를 클릭하는 것이 프로그램적으로 게시물을 만드는 것과 어떻게 다릅니까? (0) | 2023.10.04 |