0
値...分割列に基づいて、CSVの複数の行への行は、私は以下に示すように、CSVを有し、DBにロードするために、カラム3の値に基づいて複数の行にCSVファイルを解析する必要
に起因制限私はこの機能を行うにはimport csv
モジュールを使用することができ、それは私が立ち往生している問題です、私は挿入クエリを書く場合は..それはすべての行をフェッチしていない..それは、
1,2,3,4,5
10,20,30,50
100,200,300,400
可能なコードを挿入
if column 3 = 'y' else 'n' in column 4 in table
出力:
1,2,3,y
1,2,4,n
1,2,5,n
10,20,30,y
10,20,50,n
100,200,300,y
100,200,400,n
ここでは、私はあなたが定数として第一2列を維持し、上のすべての次の番号の存在のために新しい行を作りたいと仮定しています私のコード
import csv
import os
#Test-new to clean.csv
fRead=open("clean.csv")
csv_r=csv.reader(fRead)
#to skip first two lines
leave=0
for record in csv_r:
if leave<2:
leave+=1
continue
#storing the values of column 3,4,5 as an array
JMU=[]
for t in [2, 3, 4]:
if not(record[t] in ["", "NA"]):
JMU.append(record[t].strip())
#print len(JMU)
#print "2"
if len(JMU)==0:
#print "0"
pass
else:
#check if the name contains WRK
isWRK1 = "Table"
for data in JMU:
print data
if data[:3].lower()=="wrk" or data[-3:].lower()=="wrk":
isWRK1="Work"
print isWRK
else:
isWRK = "table"
#check if column 2 value is "Yes" or "No"
fourthColumn="N"
if not(record[2] in ["", "NA"]):
#print record[2]
if record[3].strip().lower()=="no":
# print record[3]
fourthColumn = "I"
else:
fourthColumn = "N"
for i in JMU:
iWRK = "Table"
if record[2]==i:
newRecord = [record[0], record[1], i, fourthColumn, isWRK,]
#print newRecord
elif record[3] == i:
newRecord = [record[0], record[1], i, "N", isWRK]
#print newRecord
else:
newRecord = [record[0], record[1], i, "N", isWRK]
print ("insert into table (column_a,column_b,column_c,column_d,column_e) values (%s,%s,%s,%s,%s)"% (record[0],record[1],record[2],record[3],record[4]))
fRead.close()
fWrite.close()
probがありますかあなたが持っている解決策を教えてください、あるいはあなたが始める場所をお探しですか? –
あなた自身でこれを試みる必要があります。これは人々があなたのためにコードを書く場所ではありません。 – bravosierra99
ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。投稿した内容から、CSVファイルの読み方が分からないように見えます。これは、あなたがオンラインで調べるものです。 – Prune