• 締切済み

PostgreSQL テキストファイルのインポートができません

初めて質問させていただきます。どうかよろしくお願いいたします。 PostgreSQL8.4を勉強始めたばかりです。 エクセルの社員一覧シートをタブ形式でD:\TEST\TEST.txtに作成いたしました。 このデータを社員テーブルにインポートしたいのですが 氏名の項目で名字と名前の間に半角の空白があり インポートできません。 ダブルコーテーションで氏名を囲むとできるのですが テーブルの項目にダブルコーテーションが入ってしまいます。 テキストファイル ------------------------------ 番号 氏名 生年月日 1 山田 太郎 19610101 2 山田 花子 19610101 社員テーブル ------------------------------- 項目名 データ型 番号 INT 氏名 VARCHAR(100) 生年月日 INT PostgreSQLではPSQLを使用しております。 インポートでは、COPYコマンドを使用しております。 COPY 社員テーブル FROM 'D:/TEST/TEST.txt'; ご教授の程、よろしくお願いいたします。

  • camp7
  • お礼率100% (1/1)

みんなの回答

  • mimzy
  • ベストアンサー率33% (32/96)
回答No.1

Postgresのコピーはフィールドの区切り文字としてタブ("\t")を使用します。 TEST.txtの区切り文字をタブに変えるか、別の区切り文字例えばカンマを を使用して、コピーする際に、"delimiter"オプションを使用してインポートができます。

参考URL:
http://www.sraoss.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/sql-copy.html
camp7
質問者

お礼

ありがとうございました。 悩んでいたことが解決できました。 PostgreSQLのドキュメントをもっと勉強します。

関連するQ&A

  • PostgreSQLのエクスポートについて

    現在、自宅から大学へ接続し、TeraTermからPostgreSQL8.1.23を利用しています。 なので、自宅のプログラムファイルの中にはpgsqlというファイルがありません。 そこで、作成したテーブルを自宅のPCでエクスポートしたいのですができません。 <インポートを実行した場合> a=>\copy example from import.txt; \. と表示され、なぜか違うテーブルのデータが増える。 <エクスポート> a=>\copy example to export.txt; a=> なにも表示されず、デスクトップに用意したexport.txtには、データが書き込まれません。 この場合、import.txt・export.txtのファイルがデスクトップにあるからいけないのでしょうか?

  • sybase bcpでのデータインポートについて

    UNIXでサイベースのbcpを使用し、テーブルへデータのインポートを行おうとしています。 この際、データが""(ダブルコーテーション)で括られていると、ダブルコーテーションもデータとしてテーブルに格納されてしまいます。 ダブルコーテーションはデータとして認識させないオプションはあるのでしょうか。 検索してみましたが、該当するような文献が見当たらなかったので、質問させていただきました。 ご存知の方がいらっしゃいましたら、よろしくお願いします。

  • テキストデータをpostgreSQLのデータベースに一括インポートする方法(perl)

    今、テキストデータをpostgreSQLのデータベースに一括インポートする CGI(perl)にて作成中なのですが、息詰まってしまい、わかる方が いましたら、ご伝授いただければと思い質問させていただきました。 ■CGI(test-inport.cgi)    ~ 省略 ~ $cmd = "●●●"; system($cmd); $cmd = "psql -h ホスト名 -c 'copy テーブル名 from 'テキストファイル名'"; system($cmd); ※ここのホスト名は何を書いたらいいのでしょうか? 良かったら、教えて下さい。 上記ので、●●●に、telnet で使用する \i テーブル名 などを入れて、DBを作成し、そこにテキストデータを流したい と思っています。 しかし、 $cmd = "\i テーブル名"; system($cmd); が動きません。 どのように、書けばいいのでしょうか? 良かったら、教えて下さい。 また、アルゴリズム自体がおかしい場合は、 違う手法も教えていただければと思います。

    • ベストアンサー
    • Perl
  • VBAでCSVファイルのインポートについて

    ACCESS2003でCSVファイルのインポートを行うVBAをご教授下さい。 ただし、CSVファイルは各項目がダブルコーテーションではさまれており、カンマはありません。 1行目にヘッダーがあります。 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True ↑ これだと、うまくインポートされませんでした。 大変困っております。 どうぞよろしくお願い致します。

  • "文字列"? > CSVデータをMySQLにインポート時テキストデータのフォーマット

    CSVデータをMySQLにインポートする時に、データの中にテキストデータ(文字列)があるとします。 データを正しくインポートする為に、文字列をダブルクォーテーションやシングルクォーテーションで囲む必要はありますでしょうか。 記憶は定かではありませんが、「PostgreSQLの場合、文字列をクォーテーションで囲むとエラーになる。MySQLの場合は逆で、文字列をクォーテーションで囲まないとエラーになる。」みたいな話しを聞いたことがあるような気がします。 どなたか、教えていただければ幸いです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • テーブルにcsvファイルをインポートできない

    かなり困っています。REDHAT LINUXでpostgresのテーブルにpsqlからのCOPYコマンドでcsvファイルのデータをインポートしようとしているのですが、文字数オーバーのエラーがでてしまいます。テーブルは2列で1つ目の列はCHAR(10)で2列目はINT4型です。csvファイルの内容はとりあえず1行だけ入れていて「"1234567890","1234"」を入れています。コマンドはpsqlで「COPY テーブル FROM 'ファイルのパス' USING DELIMITER ","」で行いました。エラーはおそらくインポートしたデータがおかしくなって変な桁数になっているのですが、どういうふうにおかしくなっているのかがよくわからないので対策できません。

  • Excelの表引き関数で複数の項目を引数にしたい場合の方法は?

    (登録番号,氏名,生年月日,住所) (1,山田太郎,19800101,東京都) (2,山田次郎,19810101,大阪府) (3,山田花子,19820101,愛知県) ・ ・ ・ このような形で並んでいる表を参照して、 別表 (登録番号,氏名,生年月日,住所) ・ ・ ・ にどれか1つの項目を入れると残りの項目が出てくる方法を考えています。 (例えば登録番号を入れれば氏名、生年月日、住所が。氏名を入れれば、登録番号、生年月日、住所が) 入力する項目が1つならばVlookup関数を使えばいいというのはわかるのですが、 その場合に応じて入力する項目が異なる場合はどのような関数を使えばよいでしょうか? よろしくお願いします。

  • Excel 2002 をtxt形式にして書き出すには

    Excel2002を使用しており以下のようなデータがあります。 例 生年月日 氏名 郵便番号 県名  1999/2/2 @@@@ 115-0023 東京都 1998/7/2 @@@@ 335-0005 埼玉県 これを最終的に「.txt」の形式にして「”」でそれぞれのセルを 囲った状態にしたいのです。 (ダブルコーテーション間は半角スペース1個) "生年月日" "氏名" "郵便番号" "県名"  "1999/2/2" "@@@@" "115-0023" "東京都" "1998/7/2" "@@@@" "335-0005" "埼玉県" Excelの機能を使ってテキスト形式に書き出すとタブ区切りになります。 メモ帳の置換機能を使ってタブ区切りになっている部分を「" "」に 置き換えるという方法をとってみたのですが、件数が2000件以上項目数も10項目以上あるため非常に時間がかかる上、「応答なし」で止まってしまいます。 不慣れなAccess2002を使用して、なんとかダブルコーテーションで くくった状態で書き出せたのですが、表記が一部変わってしまいました。 数字       5 ⇒ 5.00 生年月日 1998/7/2 ⇒ 1998/7/2 0:00:00 Accessを使用すればよいようなのですが、具体的にどのように 実行すれば答えにたどり着けるのかが分かりません。 ご存知の方いらっしゃいましたらお力をお貸しください。 お手数おかけいたしますがよろしくお願いいたします。

  • 大容量のCSVファイルをインポートするには。

    お世話になります。 Windows版のPostgreSQLをインストールしてCSVファイルを読み込ませようとしていますが途中でエラーが発生してしまい困っています。 取り込んでいるCSVファイルの件数は約65万件です。 その際に実行している下記のコマンドは以下の通りです。 SET client_encoding TO 'SJIS'; COPY T_SAMPLE FROM 'C:\test.csv' WITH CSV; また途中で発生したエラーの内容は以下の通りです。 ERROR: メモリ不足です DETAIL: 1073708532バイトを持つ文字列バッファを65534バイト多く、大きくすることができません。 CONTEXT: T_SAMPLEのCOPY。行番号 231916 どのようにしたら大容量のCSVファイルをデータベースにインポートする事ができるのでしょうか。 大変、申し訳ありませんがどうか私を助けて下さい。 些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。 私の環境のOSは「Windows Vista Ultimate」でPostgreSQLは「PostgreSQL 9.5.4」です。 何卒、宜しくお願いします。では、失礼します。

  • アクセスインポート

    うまく質問できるか自信がないのですが、困っていますのでよろしくお願いします。 同僚がアクセスのテーブルをエクセルにエクスポートしてエクセルのほうの項目名を削除しデータの修正をしました。そして、その修正した内容だけを(削除した項目の内容はそのままでいい)アクセスに反映させてほしいと言ってきました。 テーブル名 資料 項目数は30 ID 氏名   番号   単位...   資格1  資格2  番号の内容 A AYUMI  1   1  EXCEL     B MASAYO  1   2  WORD   POWER エクセルファイル名 エクスポート 項目数は20 ID 氏名  番号の内容  単位...資格3 A AYUMI  上級      2 B MASAYO  上級      1 みたいな感じで(実際のデータとは違いますが) 項目数を10位減らし↑の場合だと単位の中のデータを変えたということをしました。(実際は他の項目数箇所を修正したようです)あと、項目の並び順も変更してあります。氏名の次が番号の内容になっている。 で、このエクセルファイル「エクスポート」の中だけ ↑の場合だと単位の1と2を変更するということを したいのですが、アクセス「資料」でインポートするとデータが倍??になりうまくインポートできません。自宅から投稿しているのでどんなエラーメッセージがでていたか思い出せないのですがm(__)m しょうがないので、目で見て1つずつデータを修正していたら時間がものすごくかかる上に、間違えそうで なんか良い方法はないものかと思い投稿しました。 データは1000件くらいはあります。 質問の意味がわからなかったら聞いてください。 よろしくお願いします。