-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopic-post406.html
132 lines (117 loc) · 7.1 KB
/
topic-post406.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<title>日本PHPユーザ会 掲示板: PHP 5 » CSVインポート</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。" />
<meta name="keywords" content="php,web,php.gr.jp,community,usebb" />
<link rel="stylesheet" type="text/css" href="./templates/phpgrjp0.3/styles.css" />
<link rel="shortcut icon" href="./templates/phpgrjp0.3/gfx/usebb.ico" />
<link rel="alternate" type="application/rss+xml" title="日本PHPユーザ会 掲示板 RSS フィード" href="rss.xml" />
<script type="text/javascript" src="sources/javascript.js"></script>
</head>
<body onload="javascript:init_external()">
<div id="pagebox-bg">
<div id="shadow-left">
<div id="shadow-right">
<p id="logo"><a href="index.html"><img src="./templates/phpgrjp0.3/gfx/usebb.png" alt="UseBB" title="ホーム" /></a></p>
<h1 id="boardname"><span id="line">日本PHPユーザ会 掲示板</span></h1>
<h2 id="boarddescr">日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。</h2>
<div id="topmenu"><ul>
<li><a href="index.html">ホーム</a></li><li><a href="faq.html">FAQ</a></li><li><a href="active.html">活発なトピック</a></li>
</ul></div>
<div id="topmenu-shadow"></div>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-4.html">PHP 5</a> » CSVインポート
</p>
<h3 id="forumname"><a href="topic-142.html">CSVインポート</a></h3>
<p id="forummods"></p>
<p id="toolbartop"> </p>
<p id="pagelinkstop">ページ: 1</p>
<table class="maintable">
<tr>
<th>投稿者</th>
<th>投稿</th>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-172.html">syanks</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post398.html#post398" name="post398" rel="nofollow">#1</a> 2009 年 5 月 25 日(月) 13:39</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 1 2009</div>
<div class="field">返信数: 7</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">PHPを勉強し始めた初心者ですが、<br />今、4000行ほどあるCSVファイルをどうにか、Postgresqlにインポートしたく、<br />コーディングしているのですが、うまくいきません。<br />インポートする際には、重複チェックも行いたいのです。<br /><br />流れとしては、<br />1、CSVファイルをfgetcsv関数で開く<br />2、配列に読み込んだ行を一つづつ収める<br />3、DBのデータとCSVのデータをマッチング<br />4、問題なければ、CSVデータが格納されている配列をインサート<br /><br />と考えてはいるのですが、実際どのように、<br />配列にCSVデータを格納するのか?<br />DBとのデータをマッチングさせるか?<br />で迷っています。<br /><br />助言などいただければと思います。<br />よろしくお願いいたしますm( __ __ )m</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-219.html">Akaneko</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post406.html#post406" name="post406" rel="nofollow">#2</a> 2009 年 5 月 31 日(日) 14:25</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 5 月 2009</div>
<div class="field">返信数: 4</div>
<div class="field">住居: Tokyo</div>
</td>
<td class="postcontent">
<div class="post">以下、参考になれば幸いです。<br /><br /><blockquote class="quote"><div class="title">引用</div><div class="content">1、CSVファイルをfgetcsv関数で開く<br />2、配列に読み込んだ行を一つづつ収める<br /> 3、DBのデータとCSVのデータをマッチング<br /> 4、問題なければ、CSVデータが格納されている配列をインサート</div></blockquote><br />大まかな流れは、仰る通りで問題無いと思います。<br />助言としては、これにトランザクション処理を組み込めば尚良しかと思います。<br /><br />これらを踏まえて文章で回答するなら…<br />posgreの接続を確立し、fgetcsvをwhile文などでループしながら<br />行毎にバリデーションを行い正常であればINSERT文を実行する。<br />異常パターンが発生した場合はロールバックで中断。<br /><br />また、個人的にDB接続に関してはposgre関数だと貧弱なのでPDO/PEARDBを使った方が<br />お勧めです。<br /><br />こんな回答で如何でしょうか?</div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-172.html">syanks</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post408.html#post408" name="post408" rel="nofollow">#3</a> 2009 年 6 月 2 日(火) 11:38</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 1 2009</div>
<div class="field">返信数: 7</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">ご回答ありがとうございます。<br /><br />どうも自己勉強していると周りの常識と言うか<br />定石を知りたくて実際のソースの質問より、<br />ロジックの考え方にまず疑問を持ってしまって、<br />抽象的な質問になってしまい、すみません。<br /><br />大まかな考えかたが合っていて良かったです。<br /><br />DBの接続方法もいろいろあるのですね。<br />PDOで接続すると速度が速くなるような記事があったので、<br />ちょっと検証してみようと思います。<br /><br />貴重な情報ありがとうございました! <img src="./templates/phpgrjp0.3/smilies/razz.gif" alt=":P" /></div>
</td>
</tr>
</table>
<p id="toolbarbottom"> </p>
<p id="pagelinksbottom">ページ: 1</p>
<div id="bottomfix"></div>
<p id="actionlinks"></p>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-4.html">PHP 5</a> » CSVインポート
</p>
<p id="linkbar">
</p>
<p id="bottom">
日本PHPユーザ会 掲示板 は <a href="http://www.usebb.net">UseBB 1 フォーラムソフトウェア</a> を使用しています
</p>
<div id="bottom-shadow"></div>
</div>
</div>
</div>
</body>
</html>