답변:
이 문제도 만났습니다. LOCAL
SQL 문 에 추가 해야했습니다.
예를 들어 다음은 권한 문제를 제공합니다.
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
LOCAL
진술에 추가 하면 권한 문제가 사라질 것입니다. 이렇게 :
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
옵션 과 함께 mysql을 호출해야 할 수도 있습니다 .
나는이 문제가 있었다. 나는 주변을 뒤져 보았지만 만족스러운 답을 찾지 못했습니다. 내 검색 결과를 아래에 요약합니다.
액세스 거부 오류는 다음을 의미 할 수 있습니다.
GRANT FILE on *.* to user@'localhost'
) 이 없습니다 . 또는,다음 명령을 사용해보십시오.
load data local infile 'home/data.txt' into table customer;
작동합니다. 제 경우에는 효과가있었습니다.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Lyon의 문자열은 저에게 아주 좋은 팁을주었습니다. Windows에서는 백 슬래시가 아닌 슬래시를 사용해야합니다. 이 코드는 나를 위해 작동합니다.
File tempFile = File.createTempFile(tableName, ".csv");
FileUtils.copyInputStreamToFile(data, tempFile);
JdbcTemplate template = new JdbcTemplate(dataSource);
String path = tempFile.getAbsolutePath().replace('\\', '/');
int rows = template.update(MessageFormat
.format("LOAD DATA LOCAL INFILE ''{0}'' INTO TABLE {1} FIELDS TERMINATED BY '',''",
path, tableName));
logger.info("imported {} rows into {}", rows, tableName);
tempFile.delete();
동일한 문제가 발생하여 다음 단계를 수행하여 해결했습니다.
이 세 번째 요점에 대해서는 다음을 참조 할 수 있습니다. https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv를
BR,
기원 후
명령 줄을 사용하는 경우 쉬운 것을 찾았습니다.
다음으로 로그인mysql -u[username] -p[password] --local-infile
그때 SET GLOBAL local_infile = 1;
데이터베이스 선택 use [db_name]
그리고 마지막으로 LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
SET GLOBAL local_infile = 1;
되었지만 RDS에서 작동하지 않는 것 같지만 어쨌든 --local-infile
트릭 이 없었습니다
MySQL 테이블을로드하는 것이 빠르고 고통스럽지 않다는 것을 발견했습니다 (python / Django 모델 관리자 스크립트를 사용했습니다).
1) 모든 열이 VARCHAR (n) NULL 인 테이블 만들기 예 :
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) csv에서 헤더 (첫 번째 줄)를 제거한 다음로드합니다 (로컬을 잊어 버린 경우 "# 1045-사용자 'user'@ 'localhost'에 대한 액세스가 거부되었습니다 (비밀번호 사용 : YES)").
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
-> ;
Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3) 열 변경 :
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voilà!