문제

내가 가져올 필요가 csv 파일로 Firebird 그리고 나는 몇 시간을 보냈다고 몇 가지 도구와도 맞습니다.

주요 문제는 도구는 내가 하려고 했는데 다음과 같 EMS 데이터 가져오기파이어 데이터 마법사 기대하는 CSV 파일에 포함되는 모든 정보에 필요한이 있습니다.

내가 쓸 필요가 일부 사용자 정의에서 SQL insert 문은,예를 들어,나는 CSV 파일이 도시의 이름만으로 데이터베이스는 이미 모든 도시에서 다른 테이블(표준화),나를 작성해야 하위 select 에서 insert 문을 조회를 위해 도시와 쓰기의 ID,또는 저장 프로시저를 사용하고 있을 cread GUID.

내 insert 문은 다음과 같이 될 것이다:

INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES((SELECT NEW_GUID FROM CREATE_GUID), :NAME, (SELECT CITY_ID FROM CITY WHERE NAME = :CITY_NAME)

어떻게 접근 방식이?

도움이 되었습니까?

해결책

그것의 원유-그러나 하나 작업,나는 때때로 사용됩니다.

가져오는 경우에는 CSV 파일로 Excel,을 만들 수 있습니다 수식을 만드는 INSERT 문을 사용하여 문자열 연결에서의 공식입니다.그는 경우에는 CSV 파일에는 3 열에 표시되는 열을 A,B,C,Excel 에서 작성할 수 있습과 같은 식...

="INSERT INTO MyTable (Col1, Col2, Col3) VALUES (" & A1 & ", " & B1 & ", " & C1 & ")"

다음을 복제할 수 있습니다 수식의 모든 행,그리고 복사하고 붙여넣는 대답으로 텍스트 파일을 실행에 대한 데이터베이스입니다.

같은 말을-그것은 원유-그러나 그것은 매우 수 있습니다'빠르고 더러운'의 방법은 작업을 수행!

다른 팁

만인 경우에,CSV,그리고 이것은 하나의 시간 프로세스를 열어셀에서 파일,다음 쓰는 수식을 채우는 방법으로 데이터를 당신의 욕망,그리고 다음 쓰는 간단하 Concat 식을 생성 SQL 다음 사본 포뮬러한 모든 행이 있습니다.당신을 얻을 것이다 많은 수의 SQL 문을 실행할 수 있습니다.

파비오,

나는 무엇을 도미니코 수행하고있을 많은 시간,그리고 그것은 좋은"빠른"더러운 방법으로 데이터를 데이터베이스입니다.

필요하신 경우에는 이렇게 몇 번 또는 일부의 유형을 일정한 다음,더 신뢰할 수 있는 방법을 로드하는 데"있는 그대로"작품으로 테이블(i.e customer_dataload)다음 SQL 문을 사용하여 표준을 채우는 없는 필드가 있습니다.

(나는 몰라 파이어 구문을-하지만 무언가가 다음과 같...)

UPDATE person
SET id = (SELECT newguid() FROM createguid)

UPDATE person
SET cityid = (SELECT cityid FROM cities WHERE person.cityname = cities.cityname)

etc.

일반적으로,그것은 훨씬 더 빠르게(그리고 더 많은 신뢰할 수 있는)데이터를 얻기 위해 데이터베이스로 다음을 수정 데이터를 해결하기 위해 노력하는 동안 데이터는 업로드 할 수 있습니다.당신은 또한 당신의 혜택을 얻을 거래할 수 있도록 롤백하는 경우 그것은 작동하지 않습니다!!

할 수 있는 CSV 파일을 가져올로 테이블로 작성된 SQL 쿼리가 모든 필요한 변환에서 수입된 테이블 삽입생으로 대상이다.

그래서 다음과 같습니다.

<(부하 CSV 파일로 temp_table-n,city_name)>

에 삽입 target_table

선택 t.n,c.city_id 으로 도시

에서 temp_table t,도 c

t.city_name=c.city_name

좋은 끝 사용에 대한 Excel,하지만 또한 제안을 받고 편안하는 스크립트 언어 Python 과 같은,때문에 어떤 작업의 쓰기에 빠른 python 스크립트를 작업을 수행하려는 기능을 찾을 필요 엑셀에서 또는 미리 만들어진 도구는 작업을 수행합니다.

사용 csv 파일로서 외부 테이블.다음 사용할 수 있습니다 SQL 데이터를 복사에서 외부 테이블을 당신의 목적지는 테이블과 함께 모든 가능성의 SQL.보 http://www.firebirdsql.org/index.php?op=useful&id=netzka

나 이와 awk.

는 경우 예를 들어,이 정보를 CSV 파일에서:

Bob,New York
Jane,San Francisco
Steven,Boston
Marie,Los Angeles

다음과 같은 명령어를 줄 것이다 당신은 당신이 무엇을 원하는 실행과 같은 디렉토리에는 CSV 파일(이름 name-city.csv 이 예에서).

$ awk -F, '{ print "INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES ((SELECT NEW_GUID FROM CREATE_GUID), '\''"$1"'\'', (SELECT CITY_ID FROM CITY WHERE NAME = '\''"$2"'\''))" }' name-city.csv

유형 awk --help 자세한 내용은.

단지 완성되는 이 VBA 스크립트가 될 수 있는 편리한다.모두 해야 할 필요가 변경 Insert 문은 포함하는 테이블에서 질문을 열 목록(분명히 동일한 시퀀스에서 나타나에서 Excel file).

Function CreateInsertStatement()
    'Output file location and start of the insert statement
    SQLScript = "C:\Inserts.sql"
    cStart = "Insert Into Holidays (HOLIDAY_ID, NAT_HOLDAY_DESC, NAT_HOLDAY_DTE) Values ("

    'Open file for output
    Open SQLScript For Output As #1

    Dim LoopThruRows As Boolean
    Dim LoopThruCols As Boolean


    nCommit = 1 'Commit Count
    nCommitCount = 100 'The number of rows after which a commit is performed

    LoopThruRows = True
    nRow = 1 'Current row

    While LoopThruRows

        nRow = nRow + 1 'Start at second row - presuming there are headers
        nCol = 1 'Reset the columns
        If Cells(nRow, nCol).Value = Empty Then
            Print #1, "Commit;"
            LoopThruRows = False
        Else
            If nCommit = nCommitCount Then
                Print #1, "Commit;"
                nCommit = 1
            Else
                nCommit = nCommit + 1
            End If

            cLine = cStart
            LoopThruCols = True

            While LoopThruCols
                If Cells(nRow, nCol).Value = Empty Then
                    cLine = cLine & ");"                    'Close the SQL statement
                    Print #1, cLine                         'Write the line
                    LoopThruCols = False                    'Exit the cols loop
                Else
                    If nCol > 1 Then                        'add a preceeding comma for all bar the first column
                        cLine = cLine & ", "
                    End If
                    If Right(Left(Cells(nRow, nCol).Value, 3), 1) = "/" Then 'Format for dates
                        cLine = cLine & "TO_DATE('" & Cells(nRow, nCol).Value & "', 'dd/mm/yyyy')"
                    ElseIf IsNumeric(Left(Cells(nRow, nCol).Value, 1)) Then 'Format for numbers
                        cLine = cLine & Cells(nRow, nCol).Value
                    Else 'Format for text, including apostrophes
                        cLine = cLine & "'" & Replace(Cells(nRow, nCol).Value, "'", "''") & "'"
                    End If

                    nCol = nCol + 1
                End If
            Wend
        End If
    Wend

    Close #1

End Function

사용할 수 있는 무료 csvsql 니다.

  • 설치 를 사용하여 이 지침
  • 지금 실행하는 다음과 같은 명령을 입력하십시오므로 데이터를 가져오기 위해 귀하의 데이터베이스입니다.더 자세한 정보는 링크를 위이지만,그것은 다음과 같습니다.

    csvsql --db firebase:///d=mydb --insert mydata.csv

  • 다음과 같은 작동 sqlite 고,내가 무엇을 사용하여 데이터를 변환로운 쿼리 형식

    csvsql --db sqlite:///dump.db --insert mydata.csv

옵션 1:1-당신이 시도 IBExert?IBExpert ools\데이터 가져오기(시험 또는 고객 버전)입니다.

옵션 2:2-업로드하는 csv 파일을 일시적으로 테이블 F_BLOBLOAD.3-저장 프로시저를 만들 때 사용하는 기능을 3(f_stringlength,f_strcopy,f_MID) 당신은 십자가 모든 문자열을,당신의 필드를 구축하는 삽입니다.

링크:2: http://freeadhocudf.org/documentation_english/dok_eng_file.html 3: http://freeadhocudf.org/documentation_english/dok_eng_string.html

도구가 나는 최근에도 일 뛰어나게 잘이 FSQL.

당신이 쓰기 가져오는 명령을 붙여넣 FSQL 고 그것을 가져오는 CSV 파일로 파이어 테이블.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top