を挿入SQLステートメントからCSVファイル
質問
I輸出csvファイル Firebird びんの数時間を過ごしたいツールおよび合った。
主な問題は、すべてのツールっていう EMSデータインポート や Firebirdのデータをウィザード ることを期待っCSVファイルを含む全ての情報が必要なのか。
私は書く必要があるいくつかのカスタムSQLのinsertステートメントは、例えば、CSVファイルの名前ですが、私のデータベースはすでにすべての都市、別のテーブル(標準化)ながらプレーする必要がありま書subselectのinsertステートメントをルックアップのための都市に書き、そのID、もしていま保存されている手順にcread特別な技術を必要と.
私の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ラインは、書式が好きなの---
="INSERT INTO MyTable (Col1, Col2, Col3) VALUES (" & A1 & ", " & B1 & ", " & C1 & ")"
そのまま再現式についての列、コピー、ペーストの回答はテキストファイルに対するデータベースです。
うえで、原油-することが可能でかなりのコーポレート-ガバナンスの変化とダーティ"多種多様なレストランがたくさん仕事ができました!
他のヒント
どの場合はCSVでの時間、のファイルをExcelで、その書式を生成するためのデータがその希望を書き、簡単なConcat式の構築のためのSQLをコピーする方式毎に行います。また多数のSQLステートメントをドできるようになりました。います。
Fabio,
もちろん、何Vaibhavは多くすべきと思うかもしれないが、良い"クイックや汚れ"取得データをデータベース化します。
あなたが必要なこの時代に一部のタイプのスケジュール、そして信頼性の高い方法は負荷のCSVデータ"としてある場合がありますので、事業テーブルにおいてe customer_dataload)より、標準のSQL文を生成するために欠けます。
ないわからないFirebirdの構文が何かをしてもらいました。)
UPDATE person
SET id = (SELECT newguid() FROM createguid)
UPDATE person
SET cityid = (SELECT cityid FROM cities WHERE person.cityname = cities.cityname)
など。
通常、より高速に、より信頼性)のデータをデータベースのデータを直そうと試みるよりはるデータのアップロード。※または取引を可能にするために、ロールバック動作しない場合は!!
またCSVファイルインポートのテーブとしては、その後の書きるSQLクエリーは、必要なすべての変換、輸入テーブルに挿入し、その結果使用します。
そのようなもの:
<(負荷をCSVファイルをtemp_table-n city_name)>
挿入target_table
選択。n,c.city_idとして市
からtemp_table t,都c
る。city_name=c.city_name
素敵な先端の使用に関Excel、もらって快適なスクリプト言語Pythonのような、一部のタスクですやばく迅速にpythonスクリプトのように機能することができます。Excelや前加工の仕事です。
利用の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ファイル.
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
オプション1:1-してくださいIBExert?IBExpert\ツール\データをインポート(試用またはお客様のバージョン)。
オプション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ファイルのFirebirdます。