Advertisement
Guest User

Untitled

a guest
Feb 24th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. Embulkで日本語テーブルが出力できません。
  2.  
  3. Debian JessieのVagrant Boxで問題のないところを考えると、
  4.  
  5. Windows固有のトラブルかと思われます。
  6.  
  7. 僕が使っているinformix JDBC Driverでも同じようなトラブルが発生することを考えると、
  8.  
  9. PostgreSQL以外でも発生するのではないかと思っております。
  10.  
  11. ##PostgreSQLの場合
  12.  
  13. ##環境
  14. ###Client
  15. - Windows 7 SP1 (x64) ja_JP
  16. - Java 1.8.0.65 (x64)
  17. - Embulk v0.8.5
  18. - embulk-input-jdbc
  19. - embulk-input-postgresql
  20.  
  21. ###Server
  22. - Windows 7 SP1 (x64) ja_JP
  23. - PostgreSQL 9.5 (x64)
  24.  
  25. 取得する日本語テーブルを作る
  26.  
  27. ```sql
  28. create table 日本語(
  29. キー serial primary key,
  30. 名前 text
  31. );
  32.  
  33. ```
  34. データを挿入
  35.  
  36. ```sql
  37. INSERT INTO 日本語 (名前)
  38. VALUES("あらかわゆうすけ");
  39. ```
  40.  
  41. 通常のAlphabetのTableも作る
  42.  
  43. ```sql
  44. create table namelist(
  45. id serial primary key,
  46. name text
  47. );
  48. ```
  49.  
  50. データの挿入
  51.  
  52. ```sql
  53. INSERT INTO namelist (name)
  54. VALUES("あらかわゆうすけ");
  55.  
  56. ```
  57.  
  58. ##seed.ymlの編集
  59.  
  60. 下記のようなymlファイルにします。
  61.  
  62. UTF8 CRLF で保存します。
  63.  
  64. ```yml
  65. in:
  66. type: postgresql
  67. host: localhost
  68. user: postgres
  69. password: postgres
  70. database: postgres
  71. #table: 日本語
  72. query: |
  73. "select * from 日本語";
  74.  
  75. out:
  76. type: file
  77. path_prefix: C:\Users\yusuke\tables.csv
  78. file_ext: csv
  79. formatter:
  80. type: csv
  81. header_line: true
  82. charset: UTF-8
  83. newline: CRLF
  84.  
  85. ```
  86.  
  87. Guessを実行
  88. ```cmd
  89. C:\Users\yusuke>embulk.bat guess seed_win.yml -o guess_win.yml
  90. in:
  91. type: postgresql
  92. host: localhost
  93. user: postgres
  94. password: postgres
  95. database: postgres
  96. query: |
  97. "select * from 隴鯉ス・隴幢スャ髫ア・ス";
  98. out:
  99. type: file
  100. path_prefix: C:\Users\yusuke\tables.csv
  101. file_ext: csv
  102. formatter: {type: csv, header_line: true, charset: UTF-8, newline: CRLF}
  103.  
  104.  
  105. ```
  106.  
  107. runを実行
  108.  
  109. ```
  110. C:\Users\yusuke> Embulk run guess_win.yml
  111. ...(省略 詳細は Embulk_run_Error_utf8.txtを参照)....
  112.  
  113. Error: java.lang.RuntimeException: org.postgresql.util.PSQLException: ERROR: syntax error at or near ""select * from 隴鯉ス・隴幢スャ髫ア�ソス""
  114. ポジション: 1
  115.  
  116. ```
  117.  
  118. とこんな感じのエラーです。
  119. seed_win.yml をShiftJISで保存して実行した場合でもExportはできませんでした。
  120.  
  121. ##ShiftJISでseed_win.ymlを保存して実行した場合
  122.  
  123. ```cmd
  124. C:\Users\yusuke>embulk.bat guess seed_win.yml -o guess_win.yml
  125. 2016-02-24 14:23:19.035 +0900: Embulk v0.8.5
  126. 2016-02-24 14:23:19.936 +0900 [INFO] (0001:guess): Loaded plugin embulk-input-po
  127. stgresql (0.6.4)
  128. in:
  129. type: postgresql
  130. host: localhost
  131. user: postgres
  132. password: postgres
  133. database: postgres
  134. query: |
  135. "select * from 日本語";
  136. out:
  137. type: file
  138. path_prefix: C:\Users\yusuke\tables.csv
  139. file_ext: csv
  140. formatter: {type: csv, header_line: true, charset: UTF-8, newline: CRLF}
  141. Created 'guess_win.yml' file.
  142.  
  143. ```
  144.  
  145. runしてみる
  146. ```
  147. C:> embulk.bat run guess_win.yml
  148. ....(省略 詳細はEmbulk_run_Error_sjis.txt を参照)...
  149.  
  150. Error: java.lang.RuntimeException: org.postgresql.util.PSQLException: ERROR: syntax error at or near ""select * from 譌・譛ャ隱�""
  151. ポジション: 1
  152.  
  153. ```
  154.  
  155. ##Informixの場合
  156.  
  157. Informixの場合はパスワード等を晒すわけにはいかないので、
  158. エラーログだけを張っておきます。
  159.  
  160. ##環境
  161. ###Client
  162. - Windows 7 SP1 (x64) ja_JP
  163. - Java 1.8.0.65 (x64)
  164. - Embulk v0.8.5
  165. - embulk-input-jdbc
  166. - Informix JDBC Driver 4.10 JC6DE
  167.  
  168. ###Server
  169. - HP-UX
  170. - Informix v11.05
  171.  
  172. ```
  173. org.embulk.exec.PartialExecutionException: java.lang.RuntimeException: java.sql.SQLException: Code-set conversion function failed due to illegal sequence or invalid value.
  174. ```
  175. と文字エンコード関係で落ちているように見えます。
  176.  
  177. 詳細は informix_export_error.txt を参照。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement