lcm
그는 물었다 8년 전
94

Csv 임포트합니다 mysql 테이블

What is the best / 가장 빨리 업로드입니다 csv 파일 압축을 mysql 테이블? I would like for 첫 번째 행 데이터 열 이름을 사용할 수 있다.

결과 이:

https://stackoverflow.com/questions/3635166/how-to-import-csv-file-to-mysql-table

그러나 추방하라 gui 를 사용할 수 없으며 쉘로?

Dominique
그는 6년 전 댓글을 달았습니다
3

심지어 GUI 솔루션을 csv 에서 열 이름을 사용하지 않습니다. 임포트하지 전에 전체 테이블을 만들어야 합니다

lcm
그는 3년 전 댓글을 달았습니다
0

이 질문에 대한 답을 수락됨 틀렸다니까 링크하려는 는 gui 를 통해. (답) 는 이 질문에 답을 너회가 참조입니다 어제 입력되었음을 동안 (2012년).

답변 12 개

쓰는 대신에 가져오기할 스크립트입니다 정보기술 (it) 과 csv 파일 에서 정보를 mysql 에 직접 연결할 수 있습니다 다음 sql 구문을 사용하여 정보를 업로드하십시오.

엑셀 파일 압축을 가져오려면 먼저 이를 익스포트합니다 MySQL, CSV 파일. Csv 파일 수 있는 데이터를 Excel 에서 CSV 분리하십시오 헤더도 생성할지 함께 빈 끝에 방황토록 CSV 파일.

Mysql 테이블 붙여넣습니다 실행하여 가져갈 수 있습니다.

load data local infile 'uniq.csv' into table tblUniq fields terminated by ','
  enclosed by '"'
  lines terminated by '\n'
    (uniqName, uniqCity, uniqComments)
읽은 날짜: 가져오기의 MySQL 직접 CSV 파일

편집

39 you& 단축시킵니다 경우, ll, 첫 번째 행, 및 할당 작성할 필요가 통역이요 먼저 찾는 솔리드로 열 이름.

-

편집할지 2

Mysql 의 docs ) 에 '로드 데이터' 구문을:

&gt. 줄 수 있는 옵션을 사용할 수 있습니다 '무시' 무시하려면 흐름선 선수단 &gt. 파일 시작. 예를 들어, 1 라인 '무시' 건너뛰려면 사용할 수 있습니다. &gt. 초기 헤더입니다 라인을 통해 열 이름이 포함된: &gt. &gt. # 39, & # 39 로드형 DATA 안필레 /tmp/test.txt&. 표 1 에 테스트 무시하시겠습니까 흐름선.

따라서 다음 문장을 사용할 수 있습니다.

LOAD DATA LOCAL INFILE 'uniq.csv'
INTO TABLE tblUniq
FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(uniqName, uniqCity, uniqComments)

hjpotter92
lcm
그는 8년 전 댓글을 달았습니다
0

지금은 탕크s.티스 정상적으로 작동합니다.

mb14
그는 6년 전 댓글을 달았습니다
8

'선' 을 제거하는 대신 첫 번째 줄은 1 무시하시겠습니까 쿼리하지 추가할 수 있습니다.

JasonDavis
그는 5년 전 댓글을 달았습니다
0

Csv 파일 경로 설정 파일 다운로드되었는지 방법이 있습니까?

YumYumYum
그는 4년 전 댓글을 달았습니다
0

어떻게 이 명령을 디버그로 못하고 있을 때 해당? 나는 이 명령을 사용하여 파일을 로드하려면 노력하고 있지만 아무런 조치도 취하지 않고 있다.

Marci-man
그는 4년 전 댓글을 달았습니다
0

열이 있으면 어떨까 싶다 무시하려면 csv?

rahul
그는 2년 전 댓글을 달았습니다
0

mysql 서버에 대한 권한을 부여하는 방법을 통해 내 csv 로컬 파일 액세스하도록 실행되는 aws (rds)

hjpotter92
그는 2년 전 댓글을 달았습니다
0

어떤 오류 @rahul 할까요? 사용하고 로드형 데이터를 로컬에 안필레 '?' load DATA 안필레 스피커에만 '?'

rahul
그는 2년 전 댓글을 달았습니다
0

로컬 안필레 협력했습니다 데이터를 로드하는 감사드립니다.

39 의 간단한 PHP 명령행을 here& 스크립트입니다 will do what you need.

<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'database';

$db = mysql_connect($host, $user, $pass);
mysql_query("use $database", $db);

/********************************************************************************/
// Parameters: filename.csv table_name

$argv = $_SERVER[argv];

if($argv[1]) { $file = $argv[1]; }
else {
    echo "Please provide a file name\n"; exit; 
}
if($argv[2]) { $table = $argv[2]; }
else {
    $table = pathinfo($file);
    $table = $table['filename'];
}

/********************************************************************************/
// Get the first row to create the column headings

$fp = fopen($file, 'r');
$frow = fgetcsv($fp);

foreach($frow as $column) {
    if($columns) $columns .= ', ';
    $columns .= "`$column` varchar(250)";
}

$create = "create table if not exists $table ($columns);";
mysql_query($create, $db);

/********************************************************************************/
// Import the data into the newly created table.

$file = $_SERVER['PWD'].'/'.$file;
$q = "load data infile '$file' into table $table fields terminated by ',' ignore 1 lines";
mysql_query($q, $db);

?>

첫 번째 행과 행 표를 만들 것이라고 따라 나머지 임포트하십시오 다르거든요. 다음은 명령행을 문법:

php csv_import.php csv_file.csv table_name

Hawkee
Joel Mellon
그는 7년 전 댓글을 달았습니다
2
  • 멋진 script.* 이용하였는데, 그 말을 인용, CSV 파일 추가, & # 39 (읽기 많은 사람들이) '및', '를 완전히 들어갔다 \&quot # 39, & # 39, & # 39, 심지어' .it 필드용 끝나는 수행됨 연산뿐 부분적으로 csv 말을 인용했다.
dlo
그는 7년 전 댓글을 달았습니다
3

I think you & # 39, & # 39, \&quot 둘러싸인 짓궂군요 ','. 또한, & # 39, 많은 사람들은 합니다 ',' 흐름선 끝나는 \r\n& # 39 에서 사용하는 경우 CSV indows. 마지막으로, 필드에 있는 것은 현명한 탈출이라니요 이름이 박트릭스 경우에는 공간: \ '$ $ column\ &quot varchar (250)', '열 &quot. =;;'

LarsH
그는 5년 전 댓글을 달았습니다
1

이 질문에 답을 수락됨 훨씬 낫습니다. 특히 이 제품을 이용하면, 난 또 어떤 OP 주문하신거 스맥랜드의: 첫 번째 행 데이터 사용될 열 names&quot ";). (내가 선호하는 스크립트에서 파이썬, 그래서 don& # 39, t 설치할 필요가 있지만, PHP, t # 39 shouldn& 포트마다 어렵다.)

YumYumYum
그는 4년 전 댓글을 달았습니다
0

그것은 결코 작동합니다. 사이트의 해결하십시오 코드.

Hawkee
그는 4년 전 댓글을 달았습니다
2

39 더 정교한 수 있어, 이 문제에 대한 @yumyumyum you& re?

gre_gor
그는 3년 전 댓글을 달았습니다
0

이는 https://partner. 국한됨 대답. 관련 코드를 사용할 때, 그렇지 않으면 그 자체가 동일팔레트에 게시물로의 꽂으십시오 https://partner. 죽었습니다

Hawkee
그는 3년 전 댓글을 달았습니다
0

내가 @gre_gor 추가했어야 코드입니다.

피파드민 설치할 수 있는 경우 있을 수 있는 섹선에서 임포트합니다 가져오기의 csv 파일 데이터베이스로 확인란 나오겠는가 헤더 파일의 첫 번째 줄은 테이블 열 이름을 설정할 수 있습니다 (이 경우, 첫 번째 줄은 선택취소되어 데이터 일부가 될 것이다.

chrisfs
그는 5년 전 댓글을 달았습니다
0

정말 깜짝 놀라게 할 추가 피파드민 afaq afnor 기능을 사용하여 같은 대답을 주셔서 감사합니다.

데이터베이스에 있는 같은 수의 표를 만드는 첫 번째 열을 csv 파일.

그러면 다음과 같은 쿼리하지

LOAD DATA INFILE 'D:/Projects/testImport.csv' INTO TABLE cardinfo
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'

Mukesh
Marci-man
그는 4년 전 댓글을 달았습니다
0

열이 있으면 어떨까 싶다 무시하려면 csv?

Mysql, mysql - u 로 시작하면 &quot &lt user>; ; - p - 로컬 안필레 &lt database&gt &quot, 이를 제대로 작동합니다.

이 명령은 로드하기에 데이터는 텍스트 파일 또는 csv 파일

load data local infile 'file-name.csv'
into table table-name
fields terminated by '' enclosed by '' lines terminated by '\n' (column-name);

내 경우, 위 명령을 할 수 없기 때문에, 단 하나의 로드되었는지 &quot by&quot 종료되었습니다. 및 &quot 인클로우저된 by"; 그래서 빈 계속 다른 문자 구분하는 프로그래머용 입력할 수 있습니다. 에드그 대한. 쉼표 (,) 또는 &quot. 또는; 또는 모든 것.

  • 백성을위한 버전 5 잔인하니 * mysql 을 사용하고 있다.

Mysql 에 파일을 로드을 전에 아래 토우 '선' etc/mysql/my.cnf 때는기대어 추가되는 확인해야 합니다.

my. cnf 명령은 편집하려는

sudo vi /etc/mysql/my.cnf ''

[mysqld]  
local-infile

[mysql]  
local-infile  

일부 코드를 이렇게 하려면 내가 작성했습니까 i& # 39, ll 동일팔레트에 몇 스니핏:

$dir = getcwd(); // Get current working directory where this .php script lives
$fileList = scandir($dir); // scan the directory where this .php lives and make array of file names

그럼 어떻게 알 수 있도록 CSV 내려받습니다 헤더도 mysql 가져오기할 (참고: 열 네 mysql smartupdate 정확하게 매칭되도록 csv 열):

//extract headers from .csv for use in import command
$headers = str_replace("\"", "`", array_shift(file($path)));
$headers = str_replace("\n", "", $headers);

Mysql 서버에 쿼리를 어졌다면 보냅니다.

mysqli_query($cons, '
        LOAD DATA LOCAL INFILE "'.$path.'"
            INTO TABLE '.$dbTable.'  
            FIELDS TERMINATED by \',\' ENCLOSED BY \'"\'
            LINES TERMINATED BY \'\n\'
            IGNORE 1 LINES
            ('.$headers.')
            ;
        ')or die(mysql_error());

난 당분간 대체하십시오 벌여왔다. 어떤 일이 벌어질까 로드하기에 아니라 얼마나 어떻게 수용할 수 없는 데이터 테이블을 chunghwa 거잖나. Ddl 문은 테이블 데이터 구축을 위해 임포트하지 전에 생성해야 합니다.

특히 어려운 표에 경우 많은 수의 열.

39 는 파이썬 (거의) 의 here& 스크립트입니다 산아래의 작업:

#!/usr/bin/python    
import sys
import csv

# get file name (and hence table name) from command line
# exit with usage if no suitable argument   
if len(sys.argv) < 2:
   sys.exit('Usage: ' + sys.argv[0] + ': input CSV filename')
ifile = sys.argv[1]

# emit the standard invocation
print 'create table ' + ifile + ' ('

with open(ifile + '.csv') as inputfile:
   reader = csv.DictReader(inputfile)
   for row in reader:
      k = row.keys()
      for item in k:
         print '`' + item + '` TEXT,'
      break
   print ')\n'

이 문제를 해결하기 위해 찻입 에로남이네 최종 필드 이름 및 데이터 형식 선언, mysql 파서 won& # 39, 쉼표로 종료되었는지 견딜 수 있는 것이다.

또한 이 문제는 물론 모든 분야에 대한 데이터 형식을 텍스트를 사용합니다. 수백 개의 열 경우, 다음 표에 VARCHAR (64) 발쿰치로 테이블 너무 큽니다.

또한 최대 mySQL 용 열 수 있을 것 같다. # 39, s, s # 39 시간 때 that& it& 이동할 수 있는 경우 또는 HBase) 이다.

39 에서 사용하는 Python 의 here& 내가 어떻게 그것을했다 [csv] (https://docs.python.org/library/csv.html) 및 [MySQL 커넥터뿐] (https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html):

import csv
import mysql.connector

credentials = dict(user='...', password='...', database='...', host='...')
connection = mysql.connector.connect(**credentials)
cursor = connection.cursor(prepared=True)
stream = open('filename.csv', 'rb')
csv_file = csv.DictReader(stream, skipinitialspace=True)

query = 'CREATE TABLE t ('
query += ','.join('`{}` VARCHAR(255)'.format(column) for column in csv_file.fieldnames)
query += ')'
cursor.execute(query)
for row in csv_file:
    query = 'INSERT INTO t SET '
    query += ','.join('`{}` = ?'.format(column) for column in row.keys())
    cursor.execute(query, row.values())

stream.close()
cursor.close()
connection.close()

핵심 요소

  • 삽입하십시오 prepared statements) 의 사용
  • 39, & # 39 의 rb& '이진' file.치프 엽니다.

  • 일부 CSV 파일로 [면변형을] 할 수 있습니다 (https://docs.python.org/library/csv.html # csv 프마트 params)) ',' 같은 스키피니시알스파스 디바이스입니다.
  • 만약 't' ll get 255w isn& # 39, 충분한 you& # 39 복제본에 오류가 발생할 수 있고, 넓은 삽입하십시오 다시 시작합니다.
  • 열 유형을 조정하십시오 "t '양' decimal 수정하십시오 변경하십시오 표 (11.2)," (예:
  • 추가하기에서는 [주] 키를 (https://stackoverflow.com/a/9070808/673991), 예를 들어 "변경 테이블 t 추가 'id' int 기본 키 auto_increment;"

이미 언급한 것처럼, load data 안필레 다른 지역 작동됩니다. 하지만 일부러 내 업무에 호크스 게시하기를 php 스크립트입니다 찾았다. # 39, s what i did it, here& 디버그로 아닌. &lt p>; 1) 에 txt 파일 복사 / 붙여넣습니다 emacs 와 CSV 파일의 머리글 행 및 편집. 추가 상호 간에 필드를 쉼표, CR 의 it& # 39 의 고유한 line.&lt afaq 각 br>;; 2) 파일로 저장할 수 있는 FieldList.txt&lt br>; 3) 파일을 편집하여 데프노스 포함시키십시오 각 필드 (int (x), 하지만 대부분은 varchar 적지 않았다. 추가 테이블 만들기 타바레나미 (시작 부분에 파일이므로) 를 파일 끝. 파일로 저장합니다 CreateTable.sql&lt br>; 4) 에서 시작, mysql 클라이언트 관련 정보를 생성하기 위한 파일 table&lt 크리스 디아블리스크라 br&gt. 5), 로드 & # 39 의 시작, 복사 / 붙여넣기 대부분 mysql 클라이언트 데이터 INFILE& # 39. 내 테이블 이름과 서브시투팅 명령을 csv 파일 이름. 붙여넣습니다 config. 필드리스트리트스트 절실해졌습니다. # 39, & # 39 무시됨 1 LINES& 포함해야 합니다. 현장에서 붙여 넣기 전에 list&lt br>; &lt p>; 많은 일을 함께 하는 소리가 쉽게 emacs.

Csv 파일 압축을 임포트합니다 mysql 테이블

LOAD DATA LOCAL INFILE 'd:\\Site.csv' INTO TABLE `siteurl` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

Character   Escape Sequence
\0      An ASCII NUL (0x00) character
\b      A backspace character
\n      A newline (linefeed) character
\r      A carriage return character
\t      A tab character.
\Z      ASCII 26 (Control+Z)
\N      NULL

방문. http://www.webslessons.com/2014/02/import-csv-files-using-php-and-mysql.html

나는 여러 가지 csv &quot 포함시키십시오 가져오기할 mysql, 구글 검색 load data 안필레 &quot, mysql 워크벤치 등 사용합니다.

mysql 워크벤치 가져오기의 첫 단추를 사용하여 만드는 데 필요한 때, 나는 빈 테이블을 설정하고, 각 열을 자체적으로 혼자서 유형 참고: 기본 키 및 not null 로 마지막에 ID 열 추가해야 합니다, 그렇지 않으면 나중에 및 auto_increment 가져오기의 버튼를 가시적입니다 않습니다. 하지만 아무 일도 시작할 때 나는 버그, CSV 파일 로드하십시오 로드되었는지 같다. I give up.

내가 지금까지 발견된 가장 편리하게 사용할 수 있도록 행운의 Oracle& # 39 에 mysql 의 한다. mysql 의 excel 여기에서 다운로드할 수 있습니다.

이것은 무엇을 할 것인가. 탭, csv 파일 열기 위한 데이터를 excel 에서 찾을 때 excel 버튼를 mysql

모든 데이터, mysql 을 익스포트를 선택합니다. 참고 기본 키 ID 열 설정할 수 있다.

mysql 워크벤치 http://www. gnu. orghttp://www. 완료했으면 테이블에 변경할 수 있습니다 통화가 등 소수 (19.4) 의 대용량 소수 (10.2) 의 일반적인 사용 합니다. 다른 분야 유형: varchar (255) 으로 설정될 수 있다.