CSV 파일을 MySQL 테이블로 Import하려면 어떻게 해야 합니까?
클라이언트로부터 정규화되지 않은 이벤트 일지 CSV가 있어 MySQL 테이블에 로드하여 올바른 형식으로 리팩터링하려고 합니다.CSV 파일의 각 열에 하나의 필드가 있는 'CSVImport'라는 테이블을 만들었습니다.CSV에는 99개의 열이 포함되어 있기 때문에 이 작업 자체는 매우 어려운 작업이었습니다.
CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);
테이블에는 제약조건은 없으며 카운트(INT로 표시), 예/아니오(BIT로 표시), 가격(DIMAL로 표시) 및 텍스트 블러(TEXT로 표시)를 포함하는 열을 제외한 모든 필드에는 VARCHAR(256) 값이 있습니다.
데이터를 파일에 로드하려고 했습니다.
LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023 Deleted: 0 Skipped: 0 Warnings: 198256
SELECT * FROM CSVImport;
| NULL | NULL | NULL | NULL | NULL |
...
the the the the the the the the the the the the the the the the the the the the 。NULL
.
문제는 텍스트 블러에 여러 줄이 포함되어 있고 MySQL은 각각의 새로운 행이 하나의 데이터 행에 대응하는 것처럼 파일을 해석하고 있다는 것입니다.OpenOffice에 문제없이 파일을 로드할 수 있습니다.
clientdata.csv 파일에는 2593행과 570개의 레코드가 포함되어 있습니다.첫 번째 줄에는 열 이름이 포함됩니다.쉼표로 구분되어 있고 텍스트는 큰따옴표로 구분되어 있는 것 같습니다.
갱신:
확실하지 않은 경우 다음 매뉴얼을 참조하십시오.http://dev.mysql.com/doc/refman/5.0/en/load-data.html
가 '아까부터'에 대한 했습니다.LOAD DATA
OpenOffice가 충분히 추론할 수 있을 만큼 똑똑하고, 이제 정확한 수의 레코드를 로드합니다.
LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
아직도 많은 .NULL
로드된 데이터가 모두 올바른 위치에 없는 것 같지 않습니다.
mysqlimport를 사용하여 테이블을 데이터베이스에 로드합니다.
mysqlimport --ignore-lines=1 \
--fields-terminated-by=, \
--local -u root \
-p Database \
TableName.csv
http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/에서 찾았습니다.
, 「」를 합니다.--fields-terminated-by='\t'
문제의 핵심은 CSV 파일의 열을 표의 열과 일치시키는 것 같습니다.
많은 그래피컬 mySQL 클라이언트에는 이런 종류의 Import 대화상자가 있습니다.
제가 좋아하는 일은 Windows 기반의 HeidiSQL입니다.그래피컬 인터페이스를 통해LOAD DATA
명령어는 나중에 프로그래밍 방식으로 재사용할 수 있습니다.
파일 가져오기 [텍스트 파일 가져오기]로이동하십시오.Tools > Import CSV file
:
200개 이상의 행을 Import한 가장 간단한 방법은 phpmyadmin sql 창의 아래 명령어입니다.
CountryId, CountryName 두 개의 열이 있는 간단한 국가 표가 있습니다.
.csv > .csv data > 입니다.
다음은 명령어입니다.
LOAD DATA INFILE 'c:/country.csv'
INTO TABLE country
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
두 번째 열에 표시되지 않도록 유의하십시오. 그렇지 않으면 가져오기가 중지됩니다.
I 이 방법을 사용하여 0.046초 동안 10만 개 이상의 레코드(~5MB)를 Import합니다.
방법은 다음과 같습니다.
LOAD DATA LOCAL INFILE
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);
필드가 여러 개 있는 경우(일반적으로 마지막 필드는 건너뜁니다)(MySQL 5.6.17) 마지막 행을 포함하는 것이 매우 중요합니다.
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);
그런 다음 필드 제목으로 첫 번째 행이 있다고 가정하면 이 행도 포함할 수 있습니다.
IGNORE 1 ROWS
파일에 헤더 행이 있는 경우 다음과 같습니다.
LOAD DATA LOCAL INFILE
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);
phpMyAdmin은 CSV Import를 처리할 수 있습니다.스텝은 다음과 같습니다.
CSV 파일을 MySQL 테이블필드와 같은 순서로 준비합니다.
CSV(있는 경우)에서 헤더 행을 삭제하여 데이터만 파일에 포함되도록 합니다.
phpMyAdmin 인터페이스로 이동합니다.
왼쪽 메뉴에서 테이블을 선택합니다.
맨 위에 있는 Import 버튼을 클릭합니다.
CSV 파일을 참조합니다.
"LOAD DATA를 사용하는 CSV" 옵션을 선택합니다.
"terminated by" 필드에 " " 라고 입력합니다.
열 이름을 데이터베이스 테이블과 같은 순서로 입력합니다.
이동 버튼을 클릭하면 완료됩니다.
앞으로 사용할 수 있도록 준비한 메모로, 다른 사람이 혜택을 받을 수 있다면 여기에서 공유합니다.
MySQL Workbench(현재 6.3 버전)를 사용하는 경우 다음을 통해 이를 수행할 수 있습니다.
- '테이블' 오른쪽 클릭;
- 테이블 데이터 Import Wizard를 선택합니다.
- csv 파일을 선택하고 지시에 따릅니다(JSON도 사용할 수 있습니다).좋은 점은 Import할 CSV 파일을 기반으로 새 테이블을 만들거나 기존 테이블에 데이터를 로드할 수 있다는 것입니다.
LOAD DATA 문의 열을 나열하여 이 문제를 해결할 수 있습니다.매뉴얼:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
따라서 이 경우 csv 파일에 표시되는 순서대로 99개의 열을 나열해야 합니다.
이거 먹어봐, 나한테는 효과가 있었어
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;
여기서 IGNORE 1 ROWS는 필드 이름이 포함된 첫 번째 행을 무시합니다.파일 이름에는 파일의 절대 경로를 입력해야 합니다.
뭔가 이상한 게 보여요.EXCAPING에 사용하는 문자와 동일한 문자를 Escape에 사용하고 있습니다.그래서 엔진이 ''를 발견했을 때 어떻게 해야 할지 모르기 때문에 아무것도 제대로 된 위치에 없는 것 같습니다.탈옥의 선을 제거하면 잘 될 것 같아요.예를 들어 다음과 같습니다.
LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
CSV를 분석하여(수동으로 시각적으로...) 이스케이프에 사용하는 문자를 찾지 않는 한.「\」인 경우도 있습니다.하지만 만약 없다면 사용하지 마세요.
mysql 명령줄은 Import 시 너무 많은 문제가 발생하기 쉽습니다.방법은 다음과 같습니다.
- 공백이 없도록 헤더 이름을 편집하려면 excel을 사용합니다.
- .csv로 저장
- 무료 Navicat Lite SQL Browser를 사용하여 새 테이블을 가져오고 자동으로 만듭니다(이름 지정).
- 새 테이블을 엽니다. ID에 대한 기본 자동 번호 열을 삽입합니다.
- 원하는 대로 열의 유형을 변경합니다.
- 알았어!
또 다른 솔루션은 놀라운 csvkit 스위트의 csvsql 툴을 사용하는 것입니다.
사용 예:
csvsql --db mysql://$user:$password@localhost/$database --insert --tables $tablename $file
이 도구는 데이터 유형(기본 동작)을 자동으로 추론하고 테이블을 만들고 작성된 테이블에 데이터를 삽입할 수 있습니다. --overwrite
테이블이 이미 존재하는 경우 옵션을 사용하여 테이블을 드롭할 수 있습니다. --insert
option : option : " option" 에서 .
제품군을 설치하려면
pip install csvkit
제제: : python-dev
,libmysqlclient-dev
,MySQL-python
apt-get install python-dev libmysqlclient-dev
pip install MySQL-python
Intelij https://www.jetbrains.com/datagrip/features/importexport.html 를 사용하는 경우
mysql 워크벤치를 사용하여 동일한 작업을 수행합니다.
- 새 스키마 생성
- 새로 만든 스키마 열기
- "테이블"을 마우스 오른쪽 버튼으로 클릭하고 "테이블 데이터 가져오기 마법사"를 선택합니다.
- CSV 파일 경로와 테이블 이름을 지정하고 마지막으로 열 유형을 구성합니다. 마법사는 해당 값을 기반으로 기본 열 유형을 설정하기 때문입니다.
주의: "tail -f [mysqlworkbenchpath]/log/wb*.log"를 사용하여 mysql 워크벤치의 로그 파일에서 오류가 없는지 확인합니다.
csv 파일을 SQL 테이블로 가져오는 방법
예: " " "Overseas_trade_index
CSV 파일( 파일)
순서:
표를 만들어야 합니다.
overseas_trade_index
.csv 파일과 관련된 열을 생성해야 합니다.
SQL 쿼리:
( id int not null primary key auto_increment, series_reference varchar (60), period varchar (60), data_value decimal(60,0), status varchar (60), units varchar (60), magnitude int(60), subject text(60), group text(60), series_title_1 varchar (60), series_title_2 varchar (60), series_title_3 varchar (60), series_title_4 varchar (60), series_title_5 varchar (60), );
단말기에서 mysql 데이터베이스를 연결해야 합니다.
=>show databases; =>use database; =>show tables;
csv 데이터를 mysql 테이블로 Import하려면 이 명령을 입력하십시오.
load data infile '/home/desktop/Documents/overseas.csv' into table trade_index fields terminated by ',' lines terminated by '\n' (series_reference,period,data_value,status,units,magnitude,subject,series_title1,series_title_2,series_title_3,series_title_4,series_title_5);
sqdatabase에 대한 다음 해외 무역 지수 데이터를 확인하십시오.
select * from trade_index;
Excel 스프레드시트가 로드된 Windows 머신을 사용하는 경우 Excel에 대한 새로운 mySql 플러그인은 경이적입니다.오라클 직원들은 그 소프트웨어를 정말 잘 다루었습니다.Excel에서 직접 데이터베이스 연결을 할 수 있습니다.이 플러그인은 데이터를 분석하여 데이터와 일치하는 형식으로 테이블을 설정합니다.변환해야 할 데이터의 거대한 CSV 파일이 몇 개 있었습니다.이 도구는 큰 시간 절약이었어요.
http://dev.mysql.com/downloads/windows/excel/
Excel 내에서 온라인으로 데이터베이스에 입력되는 업데이트를 수행할 수 있습니다.이것은 매우 저렴한 GoDaddy 공유 호스팅에서 작성된 mySql 파일에서 매우 잘 작동했습니다. (GoDaddy에서 테이블을 작성할 때 데이터베이스의 오프사이트 액세스를 활성화하려면 몇 가지 비표준 설정을 선택해야 합니다.)
이 플러그인을 사용하면 XL 스프레드시트와 온라인 mySql 데이터 스토리지 간의 완전한 상호 작용이 가능합니다.
답변이 늦은 것은 알지만, 몇 가지 다른 방법을 언급하고 싶습니다.가장 쉬운 것은 명령줄을 사용하는 것입니다.순서는 다음과 같습니다.
- 다음 명령을 입력하여 MySQL CLI에 액세스합니다.
mysql -u my_user_name -p
- 데이터베이스에 표 작성
use new_schema; CREATE TABLE employee_details ( id INTEGER, employee_name VARCHAR(100), employee_age INTEGER, PRIMARY KEY (id) );
- CSV 파일을 테이블로 Import합니다.파일 경로를 언급하거나 MySQL 서버의 기본 디렉토리에 파일을 저장할 수 있습니다.
LOAD DATA INFILE 'Path to the exported csv file' INTO TABLE employee_details FIELDS TERMINATED BY ',' IGNORE 1 ROWS;
이 솔루션은 여러 솔루션 중 하나이며, 이 튜토리얼에서 찾았습니다. MySQL 데이터베이스에 CSV 파일을 로드하는 것이 일상적인 작업이라면 이 프로세스를 자동화하는 것이 좋습니다.이 경우 예약에 따라 데이터를 로드할 수 있는 일부 타사 도구를 사용할 수 있습니다.
csv 파일을 mysql 데이터베이스로 가져오기 위한 PHP 쿼리
$query = <<<EOF
LOAD DATA LOCAL INFILE '$file'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(name,mobile,email)
EOF;
if (!$result = mysqli_query($this->db, $query))
{
exit(mysqli_error($this->db));
}
**샘플 CSV 파일 데이터 **
name,mobile,email
Christopher Gritton,570-686-3439,ChristopherKGritton@inbound.plus
Brandon Wilson,541-309-5149,BrandonMWilson@inbound.plus
Craig White,516-795-8065,CraigJWhite@inbound.plus
David Whitney,713-214-3966,DavidCWhitney@inbound.plus
다음은 샘플 Excel 파일 스크린샷입니다.
as 저장 후 .csv를 선택합니다.
메모장++ 또는 기타 메모장을 사용하여 열면 아래와 같이 .csv 데이터 스크린샷이 나타납니다.
머리글을 삭제하고 mysql Table과 같이 .csv에 컬럼이 정렬되어 있는지 확인합니다.folder_name을 폴더 이름으로 바꿉니다.
로드 데이터 로컬 파일
'D:/folder_name/myfilename.csv'는 '', (fname,lname,이메일,전화)로 종료된 테이블 메일 필드로 변환됩니다.
빅데이터라면 커피를 가져와 로딩할 수 있습니다!
그것만 있으면 돼.
servername, username, password, dbname, 파일 경로, tablename 및 삽입할 데이터베이스에 있는 필드를 변경합니다.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "bd_dashboard";
//For create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$query = "LOAD DATA LOCAL INFILE
'C:/Users/lenovo/Desktop/my_data.csv'
INTO TABLE test_tab
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(name,mob)";
if (!$result = mysqli_query($conn, $query)){
echo '<script>alert("Oops... Some Error occured.");</script>';
exit();
//exit(mysqli_error());
}else{
echo '<script>alert("Data Inserted Successfully.");</script>'
}
?>
phpmyadmin을 사용하여 간단하게 했습니다.@Farhan의 절차를 따랐지만 모든 데이터가 한 열에 정리되어 있었습니다.조작 방법:
- CSV 파일을 생성하여 열 이름을 가진 헤더 행을 삭제했습니다.데이터만 보관.
- csv 열에 일치하는 열 이름을 가진 테이블을 만들었습니다.
- 각 열에 적절한 유형을 할당해야 합니다.
- 방금 Import를 선택하고 Import 탭으로 이동했습니다.
- 브라우즈에서 CSV 파일을 선택하고 모든 옵션을 그대로 유지했습니다.
- 놀랍게도 모든 데이터가 해당 열에 성공적으로 Import되었습니다.
CSV를 Import하기 위해 MySQL Query를 실행할 때 'Error Code: 1290' 오류가 발생했습니다. MySQL 서버가 --secure-file-priv 옵션으로 실행되고 있기 때문에 이 문을 실행할 수 없습니다.'
그래서 안전한 파일 위치를 위해 파일을 이동했습니다.
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Orders.csv'
INTO TABLE orderdetails.orders
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
여기서 파일 위치는 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Orders.csv'입니다.이는 CSV 파일을 'secure_file_priv' 위치로 이동했기 때문입니다.그렇지 않으면 에러가 발생합니다.
는 쿼리 secure_file_priv를 수 .SHOW VARIABLES LIKE "secure_file_priv";
출처: CSV 파일을 MySQL로 Import(쿼리 또는 Workbench 사용)
언급URL : https://stackoverflow.com/questions/3635166/how-do-i-import-csv-file-into-a-mysql-table
'programing' 카테고리의 다른 글
리소스 텍스트 파일을 문자열(Java)로 읽기 위한 유틸리티 (0) | 2022.12.20 |
---|---|
자기 주장이 있는 클래스 메서드 데코레이터? (0) | 2022.12.20 |
MySQL: 데이터베이스 삭제 오류(errno 13, errno 17, errno 39) (0) | 2022.12.20 |
Larabel Mix에 Font Awesome을 설치하는 방법 (0) | 2022.12.20 |
JavaScript 파일을 HTML 파일에 링크하려면 어떻게 해야 합니까? (0) | 2022.12.20 |