File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11use std:: io;
22use std:: io:: prelude:: * ;
33extern crate regex;
4-
54use regex:: Regex ;
65
76fn main ( ) {
@@ -10,18 +9,29 @@ fn main() {
109 let mut line = String :: new ( ) ;
1110 let mut table_name = String :: new ( ) ;
1211 let mut fields = String :: new ( ) ;
13- let re = match Regex :: new ( r"COPY (\w+) \(([\w, ]+)\) FROM stdin;" ) {
14- Ok ( re) => re,
15- Err ( err) => panic ! ( "{}" , err) ,
16- } ;
12+ let re = Regex :: new ( r"^COPY (\w+) \(([\w, ]+)\) FROM stdin;" ) . unwrap ( ) ;
1713 let mut insert_mode = false ;
1814 while stdin. read_line ( & mut line) . unwrap ( ) > 0 {
1915 if insert_mode {
2016 if line == "\\ .\n " {
2117 insert_mode = false ;
2218 }
2319 else {
24- print ! ( "{} {}" , table_name, fields) ;
20+ let mut values = String :: new ( ) ;
21+ line. pop ( ) ;
22+ for s in line. split ( "\t " ) {
23+ if s == "\\ N" {
24+ values += "NULL, " ;
25+ } else {
26+ values += "'" ;
27+ values += s;
28+ values += "', " ;
29+ }
30+ }
31+ values. pop ( ) ;
32+ values. pop ( ) ;
33+ println ! ( "INSERT INTO {} ({}) VALUES ({});" ,
34+ table_name, fields, values) ;
2535 }
2636 }
2737 else {
You can’t perform that action at this time.
0 commit comments